1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #*+*+*+*+*+*+*+*+*+**++*+*+*+*+*+*
- #Part 2: Simple Selects and Counts
- #*+*+*+*+*+*+*+*+*+**++*+*+*+*+*+*
-
- # What are all the types of pokemon that a pokemon can have?
- select distinct (name) from pokemon.types
- # What is the name of the pokemon with id 45?
- select name,id from pokemon.pokemons
- where id = 45
-
- #How many pokemon are there?
- select count(distinct(name)) as pokemon from pokemon.pokemons
-
- #How many types are there?
- select count(*) as "Num of Pokemon types"
- from pokemon.types
-
- #How many pokemon have a secondary type?
- select count(distinct(secondary_type)) as secondary_type from pokemon.pokemons
-
-
- #*+*+*+*+*+*+*+*+*+**++*+*
- #Part 3: Joins and Groups
- #*+*+*+*+*+*+*+*+*+**++*+*
-
- #What is each pokemon's primary type?
- SELECT x.name as pokemon_name, y.name as pokemon_type
- FROM pokemon.pokemons x LEFT JOIN pokemon.types y
- ON x.primary_type = y.id;
-
- #What is Rufflet's secondary type?
- SELECT x.name, y.name as secondary_type
- FROM pokemon.pokemons x LEFT JOIN pokemon.types y
- ON x.secondary_type = y.id
- WHERE x.name = 'Rufflet';
-
- #What are the names of the pokemon that belong to the trainer with trainerID 303?
- SELECT z.trainername as "Trainer", group_concat(x.name) as "Pokemons"
- FROM pokemon.pokemons x LEFT JOIN pokemon.pokemon_trainer y
- ON y.pokemon_id = x.id LEFT JOIN pokemon.trainers z
- ON y.trainerID = z.trainerID
- WHERE z.trainerID = 303
- GROUP BY z.trainername;
-
- #How many pokemon have a secondary type Poison?
- SELECT count(*) as secondary_type_Poison
- FROM pokemon.pokemons x LEFT JOIN pokemon.types y
- ON x.secondary_type = y.id
- WHERE y.name = 'Poison';
-
- #What are all the primary types and how many pokemon have that type?
- SELECT x.name as primary_types, count(y.name) as pokemon_count
- FROM pokemon.types x LEFT JOIN pokemon.pokemons y
- ON x.id = y.primary_type
- GROUP BY x.name;
-
- #How many pokemon at level 100 does each trainer with at least one level 100 pokemon have?
- select trainerid, count(pokelevel) as level_100_pokemon
- from pokemon.pokemon_trainer
- where pokelevel = 100
- group by trainerid;
-
- #How many pokemon only belong to one trainer and no other?
- SELECT count(1) as pokemon_has_one_trainer
- FROM (select x.name, count(y.trainerID)
- from pokemon.pokemons x left join pokemon.pokemon_trainer y
- on x.id = y.pokemon_id
- group by x.name
- having count(y.trainerID) = 1) a;
-
-
- #*+*+*+*+*+*+*+*+*+**++*+*
- #Part 4: Final Report
- #*+*+*+*+*+*+*+*+*+**++*+*
-
- #Final Report [explain your decision - Pokemon with the highest level is the strongest pokemon and has strongest trainer and the bottom one has the weakest trainer]
- SELECT a.name as Pokemon_Name , b.trainername as Trainer_Name , c.PokeLevel, d.name as Primary_Type , e.name as Secondary_Type
- from pokemon.pokemon_trainer c join pokemon.pokemons a
- on a.id = c.pokemon_id join pokemon.trainers b
- on b.trainerID = c.trainerID join pokemon.types d
- on a.primary_type = d.id join pokemon.types e
- on a.secondary_type = e.id
- order by PokeLevel desc #Sort the data by finding out which trainer has the strongest pokemon so that this will act as a ranking of strongest to weakest trainer.
-
-
|