【问题标题】:i try to use select min(select count()) but it doesn't work我尝试使用 select min(select count()) 但它不起作用
【发布时间】:2021-08-26 02:34:39
【问题描述】:

我想得到 emp 数量最少的房间,但它不起作用

这里是来源:

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

非常感谢!!

【问题讨论】:

  • 我尝试使用 select min(select count()) 不允许使用嵌套聚合函数。使用子查询,或排序和限制。
  • 将查询文本和错误消息作为文本而不是图片提供。以文本代码或在线小提琴的形式提供示例数据,而不是作为 git 文件夹的链接。
  • 不要将代码发布为图片。请参阅此处了解更多详细信息原因:meta.stackoverflow.com/questions/285551

标签: mysql sql count min


【解决方案1】:

使用

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

【讨论】:

    【解决方案2】:

    我认为这对你有用

    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) 
    ; 
    

    【讨论】:

      【解决方案3】:
        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,
                             dep_name,
                             dep_address,
                             dep_phone,
                             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版本。 希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-22
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        相关资源
        最近更新 更多