微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我尝试使用 select min(select count()) 但它不起作用

如何解决我尝试使用 select min(select count()) 但它不起作用

我想要房间里有最少的 emp 但它不起作用

enter image description here

这是来源:

https://github.com/kamenrider1604/testSQL.git

非常感谢!!

解决方法

使用

SELECT COUNT(..) AS `count`,..
FROM ..
ORDER BY `count` ASC LIMIT 1
,

我认为这对你有用

SELECT departments.dep_id,dep_name,dep_address,dep_phone,COUNT(employee.dep_id) 
FROM   employees,departments 
WHERE  employees.dep_id = departments.dep_id 
GROUP  BY employee.dep_id 
HAVING COUNT(employee.dep_id) = (SELECT MIN(min_dep.min) 
                                 FROM   (SELECT COUNT(employees.dep_id) 
                                         FROM   employees 
                                         GROUP  BY employees.dep_id) AS min_dep) 
; 
,
  SELECT MIN(SELECT COUNT(dep_id) FROM employees GROUP BY dep_id) FROM employees 

这个子查询不正确。 您不能从员工中选择 min()。如果要查找 min('count'),则需要从子查询中进行选择:

SELECT MIN (count) FROM (SELECT COUNT (dep_id) AS count FROM employees GROUP BY dep_id)

*如果子查询中只有表名,则不必在其中指定表名。

你的问题在这里没有真正的帮助。因为还有其他更简单的方法可以实现您在问题中提出的问题,例如 @Akina 的答案,但是,通过查看您的代码,您似乎正在尝试完成一些不同的事情。如果以上不是您想要做的,那么我只能想到另一件事:

SELECT *
  FROM (SELECT a.*,MIN (dep_count) OVER () dep_count_min
          FROM (SELECT departments.dep_id,COUNT (employee.dep_id)
                           OVER (PARTITION BY employee.dep_id)
                           AS dep_count
                  FROM employees,departments
                 WHERE employees.dep_id = departments.dep_id) a) b
 WHERE a.dep_count = b.dep_count_min

*我还没有在MySql上工作,所以以上所有内容都在Oracle中实现了。我认为基本SQL不会有太大区别,但是如果有任何问题,您可以尝试编写上述查询的MySql版本。 希望对你有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。