簡単にするために、2 つのフィールド (PERSON_NAME と COMPANY_ID のペア) を持つテーブルがあるとします。
('a',1) ('b',1) ('c',2) ('d',2) ('e',3)
PERSON_NAME a と b は COMPANY_ID 1 で働いています。
最初の 2 (または N) COMPANIES のすべての行を選択したい -
('a',1) ('b',1) ('c',2) ('d',2)
COMPANY_ID ごとに何行あるかわかりません。
各 COMPANY_ID 内のすべての行が必要なため、ここでは GROUP BY は機能しません。
これは機能します-
SELECT * FROM T
WHERE COMPANY_ID in (SELECT DISTINCT COMPANY_ID
FROM T
ORDER BY 1 DESC
LIMIT N)
しかし、パフォーマンスが問題なので、それだけでは十分ではありません (約 25,000 社あり、各企業に約 5 ~ 15 人がいます)。N は通常 500 です。