#mysql #sql #mariadb #rdbms
Вопрос:
Я довольно новичок в sql. у меня есть этот столик.
1-й я хочу выбрать, сколько студентов на каждом курсе;
SELECT COURSE_ID,COUNT(COURSE_ID) AS C FROM STUDENT GROUP BY COURSE_ID
2-й теперь я хочу выбрать MAX(C), который является наивысшим значением в столбце count из подзапроса.
SO
SELECT MAX(C) FROM ( SELECT COURSE_ID,COUNT(COURSE_ID) AS C FROM STUDENT GROUP BY COURSE_ID );
выход должен быть 3
ЭТО ПРАВИЛЬНЫЙ ПУТЬ? Я ИСПОЛЬЗУЮ MARIADB.
Комментарии:
1. Звучит разумно, дает ли это те результаты, которые вы ожидаете?
2. @АрСеН Нет, это не работает.
3. когда подзапрос используется в качестве производной таблицы (например, с помощью FROM или JOIN), вам нужно присвоить ему псевдоним, например
FROM (SELECT foo FROM bar) AS foo_bar;
4. всегда важно сказать, как что-то не работает
5. @ysth спасибо , после указания псевдонима я получил результат.
Ответ №1:
Вы могли бы полностью избежать подзапроса, используя ORDER BY
и LIMIT
:
SELECT COUNT(*) AS C
FROM STUDENT
GROUP BY COURSE_ID
ORDER BY C DESC
LIMIT 1;
Комментарии:
1. «ПРЕДЕЛ 1» показывает только первую строку после сортировки в порядке убывания?
2. это даст вам максимальное количество очков, так как оно первое в этом порядке