Посчитать оценки - MySQL
Формулировка задачи:
Привет всем
Есть таблица
Ученик Оценка
Иванов 1 Петров 2 Иванов 2 Иванов 2 Иванов 1 Иванов 5 Петров 5 Сидоров 1 Сидоров 3 Сидоров 2 Петров 4 Иванов 2 Как построить запрос, чтобы посчитать для каждого человека оценки? Пример: Ученик кол-во_1 Кол-во_2 кол-во 3 кол-во_4 кол-во_5 Иванов 1 1 2 0 0 Сидоров 2 1 0 0 0 Петров 0 0 2 3 1Решение задачи: «Посчитать оценки»
textual
Листинг программы
WITH q AS (SELECT 'Иванов' AS name, 1 AS a FROM dual UNION ALL SELECT 'Петров', 2 FROM dual UNION ALL SELECT 'Иванов', 2 FROM dual UNION ALL SELECT 'Иванов', 2 FROM dual UNION ALL SELECT 'Иванов', 1 FROM dual UNION ALL SELECT 'Иванов', 5 FROM dual UNION ALL SELECT 'Петров', 5 FROM dual UNION ALL SELECT 'Сидоров', 1 FROM dual UNION ALL SELECT 'Сидоров', 3 FROM dual UNION ALL SELECT 'Сидоров', 2 FROM dual UNION ALL SELECT 'Петров', 4 FROM dual UNION ALL SELECT 'Иванов', 2 FROM dual) SELECT name , SUM(CASE WHEN a = 1 THEN 1 ELSE 0 END) AS count_1 , SUM(CASE WHEN a = 2 THEN 1 ELSE 0 END) AS count_2 , SUM(CASE WHEN a = 3 THEN 1 ELSE 0 END) AS count_3 , SUM(CASE WHEN a = 4 THEN 1 ELSE 0 END) AS count_4 , SUM(CASE WHEN a = 5 THEN 1 ELSE 0 END) AS count_5 FROM q GROUP BY name
Объяснение кода листинга программы
- В этом коде используется конструкция
WITH
, которая позволяет создать временную таблицуq
с данными для дальнейшего использования в запросе. - В таблице
q
создаются строки с именами и оценками. - Затем выполняется запрос, который считает количество оценок каждого значения для каждого имени.
- Результатом запроса будет таблица с именами и количеством оценок каждого значения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д