1
Ошибка: столбец не в GROUP BY
-- Ошибка: first_name не в GROUP BY и не в агрегате
SELECT city, first_name, COUNT(id)
FROM employees
GROUP BY city;
-- Правильно
SELECT city, COUNT(id) AS number_employees
FROM employees
GROUP BY city;
GROUP BY.WHERE для фильтрации групп вместо HAVING.COUNT(*) и COUNT(column).SUM или AVG к нечисловым типам.-- Ошибка: first_name не в GROUP BY и не в агрегате
SELECT city, first_name, COUNT(id)
FROM employees
GROUP BY city;
-- Правильно
SELECT city, COUNT(id) AS number_employees
FROM employees
GROUP BY city;
-- Ошибка: WHERE нельзя использовать с агрегатами
SELECT city, COUNT(id) AS cnt
FROM employees
WHERE COUNT(id) > 5
GROUP BY city;
-- Правильно (подробнее в следующем занятии)
SELECT city, COUNT(id) AS cnt
FROM employees
GROUP BY city
HAVING COUNT(id) > 5;
-- Все строки, включая NULL
SELECT COUNT(*) FROM employees;
-- Только строки, где email не NULL
SELECT COUNT(email) FROM employees;
-- Ошибка: first_name — строка
SELECT SUM(first_name) FROM employees;
-- Правильно
SELECT SUM(salary) FROM employees;
Если группировать по первичному ключу, каждая группа будет содержать ровно одну строку, поэтому агрегаты не дадут новой информации.
-- Бессмысленно: id уникален
SELECT id, COUNT(*) FROM employees GROUP BY id;
-- Полезно: группировка по городу
SELECT city, COUNT(*) FROM employees GROUP BY city;