0

以下は、顧客と部門の2つのテーブルです。私は出力を得るのに非常に苦労しています。

最大従業員数の部門名のみを表示するクエリを作成したいと思います。

ここに画像の説明を入力してください

答えはこのようになります...

ここに画像の説明を入力してください

クエリを書くのを手伝ってください。

4

3 に答える 3

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
于 2012-10-04T14:23:23.883 に答える
0

Oracle 10gデータベースでcus&depテーブルを作成し、コードを正常にテストしました。どのデータベースを使用していますか。コードを投稿していただけますか。「Orderby」句が間違っていることを示すエラーメッセージが表示されます。

于 2012-10-05T17:35:13.337 に答える
0
            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;
于 2012-10-04T17:16:33.443 に答える