Нужно составить запрос с группировками - MySQL
Формулировка задачи:
Нужно из таблицы достать строки только те, которых по количеству больше определённого значения с заданным ключом. Т.е. есть таблица учеников, где есть id, фамилия и возраст. Нужно определить, какой возраст доминирует ( к примеру, в классе 10 человек возрастом 16 лет, 8 человек возрастом 15, 3 человека возрастом 14, и 1 человек возрастом 13) и отсортировать по этому критерию. Т.е. в данном примере мне нужно вернуть сначала всех 16-летних, так как их больше, затем 15-летних и т.д.
Решение задачи: «Нужно составить запрос с группировками»
textual
Листинг программы
SELECT q.id, q.l_name, q.age, cel.QQ FROM new_1 q JOIN (SELECT COUNT(id) AS QQ, age AS QW FROM new_1 GROUP BY age ORDER BY 1 ASC) cel ON q.age=cel.QW ORDER BY cel.QQ DESC
Объяснение кода листинга программы
В данном коде выполняется группировка данных по возрасту в таблице new_1
. Затем, с помощью функции COUNT подсчитывается количество записей в каждой возрастной группе. Результаты сортируются по возрастанию количества записей в каждой возрастной группе. В итоге, выводятся идентификатор, имя и возраст записи из таблицы new_1
, которые соответствуют возрастной группе с наибольшим количеством записей.
- SELECT q.id, q.l_name, q.age, cel.QQ FROM new_1 q
- JOIN (SELECT COUNT(id) AS QQ, age AS QW FROM new_1 GROUP BY age ORDER BY 1 ASC) cel
- ON q.age=cel.QW
- ORDER BY cel.QQ DESC Код выполняет следующие действия:
- Выполняет запрос SELECT для выборки данных из таблицы
new_1
- Добавляет псевдонимы для полей id, l_name и age с помощью указания q.id, q.l_name и q.age в запросе SELECT
- Создает подзапрос с использованием функции COUNT для подсчета количества записей в каждой возрастной группе
- Группирует данные по полю age с помощью указания GROUP BY age
- Сортирует результаты по полю QQ (количество записей) в порядке возрастания с помощью указания ORDER BY 1 ASC
- Создает псевдонимы для полей QQ и QW с помощью указания QQ и QW в подзапросе
- Соединяет результаты подзапроса с таблицей
new_1
с помощью указания ON q.age=cel.QW - Сортирует результаты по полю QQ (количество записей) в порядке убывания с помощью указания ORDER BY cel.QQ DESC
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д