Subqueries

Terms defined: common table expression (CTE), subquery

Negating Incorrectly

select distinct person
from work
where job != 'calibrate';
| person |
|--------|
| mik    |
| po     |
| tay    |

Set Membership

select *
from work
where person not in ('mik', 'tay');
| person |   job    |
|--------|----------|
| po     | clean    |
| po     | complain |

Subqueries

select distinct person
from work
where person not in (
    select distinct person
    from work
    where job = 'calibrate'
);
| person |
|--------|
| po     |
| tay    |

Common Table Expressions

with grouped as (
    select
        species,
        avg(body_mass_g) as avg_mass_g
    from penguins
    group by species
)

select
    penguins.species,
    penguins.body_mass_g,
    grouped.avg_mass_g
from penguins inner join grouped
on penguins.species = grouped.species
where penguins.body_mass_g > grouped.avg_mass_g
limit 5;
| species | body_mass_g | avg_mass_g |
|---------|-------------|------------|
| Adelie  | 3750.0      | 3700.7     |
| Adelie  | 3800.0      | 3700.7     |
| Adelie  | 4675.0      | 3700.7     |
| Adelie  | 4250.0      | 3700.7     |
| Adelie  | 3800.0      | 3700.7     |