簡體   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