2017-11-13 10 views
0

私はSQLでプログラミングするのがとても新しいです。質問に問題があります。MySQL:スタッフの人数を計る

私はスタッフが一番多い部門を見つけなければなりません。私はどのようにそれを行うのか全く分かりません。私が使用することができます

テーブルが

here

ている私は、最終的な結果は、DEPARTMENT_NOとMax(カウント(DEPARTMENT_NOを))の列を持っていると思うが、私はこれを取得したいかどうかはわかりません?それとも、私が見ていない簡単な方法がありますか?

EDITは、これまでのところ私は

SELECT Department_no, Count(Department_no) FROM ManagerOrBoss GROUP BY Department_no;

を持っている。しかし、私は、理想的には、カウントの最大値を見つけたいが、SQLは「グループ機能エラーの無効な使用」を与え続けています。

+0

部門テーブルはありますか? – Rams

+0

いいえ、テーブルを3番目の通常の形式にしなければなりませんでした(うまくいけば私は正しく行いました)、それを非本質的なテーブルとみなしました。 – Grantairible

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-クエリ – Strawberry

答えて

1

以下のクエリを使用して、より高い番号を持つ部門を取得することができます。スタッフの注意クエリ上記

select a.Department_no ,count(a.Staff_id) maxstaffa 
from table a 
cross join (
    select count(Staff_id) maxstaffb 
    from table 
    group by Department_no 
    order by maxstaffb desc 
    limit 1 
) b 
group by a.Department_no 
having maxstaffa = b.maxstaffb 

は、彼らはすべてのスタッフ

2

の同じ最大数を持っている場合は、以下のようにあなたがあなたのクエリにgroup by句で、カウントを使用することができ、複数の部署を返すことができます。

select Department_no, count(Staff_id) from ManagerOrBoss 
group by department_no 
order by count(staff_id) limit 1 
+0

同じスタッフの2つの部門がある場合はどうなりますか? –

+0

@MKhalidJunaidユーザーは最大数の部門を取得する方法を知りたがっていました。スタッフのとにかく、スタッフの最大カウントが同じ部門を指摘してくれてありがとう。 +1 – userDee

0

いくつかのより多くのデータベース・傾斜の人々は、これは非常に悪い考えである理由をお聞かせすることができるかもしれないが、私は何かリットルを行うだろうメンバーの数が最も多いdeparment(複数可)を取得しますike:

SELECT Department_no, COUNT(Staff_id) TheCount 
FROM ManagerOrBoss 
GROUP BY Department_no 
HAVING TheCount = (
    SELECT MAX(Num) 
    FROM (
     SELECT Department_no, COUNT(Staff_id) Num 
     FROM ManagerOrBoss 
     GROUP BY Department_no 
    ) as A 
) 

私の構文が少しずれているとお詫び申し上げます。私は通常MSSQLで働いていますが、これをMySQLに適応しようとしました。

関連する問題