以下は、顧客と部門の2つのテーブルです。私は出力を得るのに非常に苦労しています。
最大従業員数の部門名のみを表示するクエリを作成したいと思います。
答えはこのようになります...
クエリを書くのを手伝ってください。
サブクエリを使用して、そのクエリから選択することをお勧めします。アウターセレクトでは、従業員数で注文し、に制限し1
ます。これにより、最上位の部門が提供されますが、最上位の部門の数のリストを提供するように変更できる柔軟性もありますx
。
SELECT Dep_Name FROM (
SELECT
d.Dep_Name, COUNT(*) AS `count`
FROM
Departments d
JOIN Employees e ON e.Dep_id = d.Dep_id
GROUP BY
d.Dep_id
) AS q
ORDER BY `count` DESC
LIMIT 1
アップデート
@Demsによるコメントによると、実際にはサブクエリなしでこれを処理できます。
SELECT
d.Dep_Name
FROM
Departments d
JOIN Employees e ON e.Dep_id = d.Dep_id
GROUP BY
d.Dep_id
ORDER BY
COUNT(*) DESC
LIMIT 1
Oracle 10gデータベースでcus&depテーブルを作成し、コードを正常にテストしました。どのデータベースを使用していますか。コードを投稿していただけますか。「Orderby」句が間違っていることを示すエラーメッセージが表示されます。
SELECT *
FROM
(
SELECT
d.dep_id,
d.dep_name,
count(c.cus_id) cusCount
FROM
cus c,
dep d
WHERE
c.dep_id = d.dep_id
GROUP BY
d.dep_id,d.dep_name
ORDER BY
cusCount desc)
WHERE
ROWNUM = 1;