[英]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.