【问题标题】:ERROR is "group function is nested too deeply"?错误是“组函数嵌套太深”?
【发布时间】:2017-10-19 01:46:08
【问题描述】:

试图显示学生人数最少的部门的名称。

【问题讨论】:

标签: mysql min


【解决方案1】:

试试这样的:

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 仅选择第一行,您只会获得学生人数最少的部门。

【讨论】:

  • 只需要显示部门名称,并且可以有多个具有相同最小值的行。
  • TOP 是 MSSQL 语法而不是 MySQL 语法,所以你的答案不正确
【解决方案2】:

是这样的吗?

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

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多