| 1 |
- /*Part 1*/
/*What are all the types of pokemon that a pokemon can have?*/
select distinct name from pokemon.pokemons order by name;
/*What is the name of the pokemon with id 45?*/
select * from pokemon.pokemons where id = 45;
/*How many pokemon are there?*/
select count(ID) from pokemon.pokemons;
/*How many types are there?*/
select * from pokemon.types;
/*How many pokemon have a secondary type?*/
select count(distinct (secondary_type))
from pokemon.pokemons;
/*Part 3*/
/*What is each pokemon's primary type?*/
select t.name as name_type, pk.name as pokemon_name, pk.primary_type from pokemon.pokemons pk
left join pokemon.types t
on pk.primary_type = t.id;
/*What is Rufflet's secondary type?*/
select t.name as name_type, pk.name as pokemon_name, pk.secondary_type
from pokemon.pokemons pk
left join pokemon.types t
on pk.secondary_type = t.id
where pk.name = "Rufflet";
/*What are the names of the pokemon that belong to the
trainer with trainerID 303?*/
select distinct(pok.name) as pokemon_name,
t.trainerID as trainer_id,
pk.trainername as trainer_name
from pokemon.trainers pk
left join pokemon.pokemon_trainer t
on pk.trainerID = t.trainerID
left join pokemon.pokemons pok
on pok.id =t.pokemon_id
where pk.trainerID = 303;
/*How many pokemon have a secondary type Poison*/
select count(pk.name) as num_of_pokemon,
t.name as name_type,
pk.secondary_type
from pokemon.pokemons pk
left join pokemon.types t
on pk.secondary_type = t.id
where t.name in ("poison")
group by t.name,pk.secondary_type;
/*What are all the primary types and how many
pokemon have that type? */
select count(pk.name) as num_of_pokm_prim_typ,
t.name as prim_name_type,
pk.primary_type as primary_type_id
from pokemon.pokemons pk
left join pokemon.types t
on pk.primary_type = t.id
where pk.primary_type is not null
group by t.name, pk.primary_type
order by num_of_pokm_prim_typ desc;
/*How many pokemon at level 100 does each trainer with at
least one level 100 pokemon have? (Hint: your query should
not display a trainer*/
select count(pok.name) as num_of_pokmn,
t.pokelevel
from pokemon.pokemon_trainer t
left join pokemon.pokemons pok
on pok.id =t.pokemon_id
where t.pokelevel = 100
group by t.pokelevel;
/*How many pokemon only belong to one trainer
and no other?*/
select * from (
select pok.name as pokemon_name,
count(pk.trainername) as trainer_name
from pokemon.trainers pk
left join pokemon.pokemon_trainer t
on pk.trainerID = t.trainerID
left join pokemon.pokemons pok
on pok.id =t.pokemon_id group by pok.name) a
where a.trainer_name = 1;
# Part 4: Final Report
select pok.name as "Pokemon Name",
pk.trainername as "Trainer Name",
t.pokelevel as "Level",
ptyp.name as "Primary Type",
styp.name as "Secondary Type"
from pokemon.trainers pk
left join pokemon.pokemon_trainer t
on pk.trainerID = t.trainerID
left join pokemon.pokemons pok
on pok.id =t.pokemon_id
left join pokemon.types ptyp
on pok.primary_type = ptyp.id
left join pokemon.types styp
on pok.secondary_type = styp.id
order by t.pokelevel desc, pok.secondary_type desc
|