0

Workersさて、 DBにテーブルを取得しました。idname、 の4 つの列がありsalaryますdepartment。行の最大給与値の 90% を超える給与を持つ労働者の数と、そのような給与を持つ労働者の数が部門内の労働者数の 15% を超える部門のリストを表示する必要があります。

最初に、給料の高い労働者を含むすべての行を表示するようなクエリを作成しました

 SELECT * 
 FROM   `Workers` 
 WHERE id IN (
    SELECT `id`  
    FROM   `Workers` 
    WHERE  `salary` > 0.9 * (SELECT MAX( `salary` )
                             FROM  `Workers`)) 

多分私は本当にばかげたことを尋ねますが、私は立ち往生し、それから抜け出すための次のステップをどのように行うべきか本当にわかりません.

4

1 に答える 1

2

これは醜いですが、うまくいくはずです:

SELECT department, COUNT(*)
FROM `Workers` w
WHERE id IN
    (SELECT `id`  FROM `Workers`
     WHERE  `salary` > 0.9 * (SELECT MAX( `salary` )  FROM  `Workers`)) 
GROUP BY department
HAVING COUNT(*) > 0.15 *
    (SELECT COUNT(*) FROM `Workers`
     WHERE department = w.department)
于 2012-10-30T19:54:27.643 に答える