I recently learned that you can simply reference an alias defined in the SELECT
clause further down in the GROUP BY
clause if you're using a column alias.
Consider this example table in SQLite:
create table users
(
id integer primary key,
name text
);
Instead of writing:
select
lower(name) as name_lower,
count(*) as count
from
users
group by
lower(name);
You can do this:
select
lower(name) as name_lower,
count(*) as count
from
users
group by
name_lower;
This is cleaner and also easier to refactor.