繁体   English   中英

SQL 查询 max(), count()

[英]SQL query max(), count()

数据库架构看起来像

雇员(雇员姓名、街道、城市)
作品(员工姓名、公司名称、工资)
公司(公司名称,城市)
管理(员工姓名,经理姓名)

需要做的查询是:
找到员工最多的公司。

我可以通过查询找出最大计数:

SELECT max( cnt ) max_cnt
FROM (

SELECT count( employee_name ) cnt, company_name
FROM works
GROUP BY company_name
)w1;

但是现在我找不到公司的名字了。 如果有人有一些想法,请分享。

要获取包含最大值的整行,您可以使用ORDER BY ... DESC LIMIT 1而不是MAX

SELECT company_name, cnt
FROM (
    SELECT company_name, count(employee_name) AS cnt
    FROM works
    GROUP BY company_name
) w1
ORDER BY cnt DESC
LIMIT 1
SELECT company_name,count(*) as cnt 
FROM works 
GROUP BY company_name 
ORDER BY cnt DESC

怎么样:

SELECT count( employee_name ) cnt, company_name
FROM works
GROUP BY company_name
ORDER BY cnt DESC
LIMIT 1;

编辑:

上面更正了 MySQL

select company_name 
from works
group by company_name
having count(distinct employee_name)>=all(select count(distinct employee_name)
from works
group by company_name )

这是工作查询

Select * from(SELECT count(EmpName)cnt, CName FROM works GROUP BY CName Order By cnt desc) where ROWNUM = 1;

这看起来像一个课程问题。

如果不止一家公司的员工人数最多,则使用 LIMIT 的查询不起作用。 “ORDER BY”没有过滤掉无用的信息。 因此我们有以下解决方案

SELECT company_name FROM
(SELECT company_name, count(employee_name) cnt
    FROM works
    GROUP BY company_name) 
JOIN 
(SELECT max(cnt) max_cnt
FROM (
    SELECT count(employee_name) cnt
    FROM works
    GROUP BY company_name
)) ON cnt = max_cnt
select company_name from works_for
group by company_name
having count(employee_name) = (select max(count(employee_name))from works_for
group by company_name);

在甲骨文中

    select company_name, count(*) as count 
    from works 
    group by company_name
    having count(*) >= all(select count(*) from works group by company_name)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM