Нужно составить запрос с группировками - 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, которые соответствуют возрастной группе с наибольшим количеством записей.

  1. SELECT q.id, q.l_name, q.age, cel.QQ FROM new_1 q
  2. JOIN (SELECT COUNT(id) AS QQ, age AS QW FROM new_1 GROUP BY age ORDER BY 1 ASC) cel
  3. ON q.age=cel.QW
  4. ORDER BY cel.QQ DESC Код выполняет следующие действия:
  5. Выполняет запрос SELECT для выборки данных из таблицы new_1
  6. Добавляет псевдонимы для полей id, l_name и age с помощью указания q.id, q.l_name и q.age в запросе SELECT
  7. Создает подзапрос с использованием функции COUNT для подсчета количества записей в каждой возрастной группе
  8. Группирует данные по полю age с помощью указания GROUP BY age
  9. Сортирует результаты по полю QQ (количество записей) в порядке возрастания с помощью указания ORDER BY 1 ASC
  10. Создает псевдонимы для полей QQ и QW с помощью указания QQ и QW в подзапросе
  11. Соединяет результаты подзапроса с таблицей new_1 с помощью указания ON q.age=cel.QW
  12. Сортирует результаты по полю QQ (количество записей) в порядке убывания с помощью указания ORDER BY cel.QQ DESC

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5