2017-05-19 1 views
-1

은 학생 수가 가장 적은학과의 이름을 표시하려고했습니다. 테이블 구조가 ERROR가 "그룹 함수가 너무 깊이 중첩되어 있습니다"?

SELECT department_name 
FROM department natural join student 
GROUP BY department_name 
HAVING MIN(COUNT(*)); 

처럼 =>

the question was

+0

귀하의 질문은 무의미하다. https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql- 대신 – Strawberry

답변

0

이 같은 것을보십시오 :

SELECT TOP 1 department_name, count(*) AS number_of_students 
FROM department natural join student 
GROUP BY department_name 
ORDER BY number_of_students 

그것은 당신에게 학생들의 숫자로 정렬 된 부서의 목록을 제공합니다 . TOP 1을 통해 첫 번째 행만 선택하면 학생 수가 가장 적은 부서 만 받게됩니다.

+0

은 department_name을 표시해야하며 동일한 최소값을 갖는 여러 행을 가질 수 있습니다. –

+1

TOP는 MySQL 구문이 아닌 MSSQL 구문이므로 답변이 잘못되었습니다. –

0

이렇게하면 어떨까요?

SELECT 
T1.department_name, COUNT(T2.department_id) totalCount 
FROM department T1 
LEFT JOIN student T2 
ON T1.department_id = T2.department_id 
GROUP BY T2.department_id 
HAVING COUNT(T2.department_id) = 
(
    SELECT 
    COUNT(T2.department_id) totalCount 
    FROM department T1 
    LEFT JOIN student T2 
    ON T1.department_id = T2.department_id 
    GROUP BY T2.department_id 
    ORDER BY totalCount ASC 
    LIMIT 1 
) 

SQLFIDDLE DEMO

관련 문제