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