私は自分の問題を単純化し、よりよく説明するためにこの例を作成しました。
私のテーブル:
CREATE TABLE `table_company` (
`source_id` INT(10) UNSIGNED NOT NULL,
`company_id` INT(10) UNSIGNED NOT NULL,
`clicks` INT(10) UNSIGNED NOT NULL,
PRIMARY KEY (`source_id`,`company_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
私のデータ:
INSERT INTO table_company VALUES
(1,100,8),(2,100,7),(3,200,9),(4,300,3),(5,100,4),(6,400,5),(7,100,10),(8,500,4),(9,500,9),(10,400,9);
SELECT source_id,company_id,AVG(clicks) AS avg_click FROM table_company
GROUP BY source_id,company_id
ORDER BY avg_click DESC;
私に与えます:
source_id company_id avg_click
--------- ---------- -----------
7 100 10.0000
3 200 9.0000
9 500 9.0000
10 400 9.0000
1 100 8.0000
2 100 7.0000
6 400 5.0000
5 100 4.0000
8 500 4.0000
4 300 3.0000
私に与えるクエリを書きたい:
source_id company_id avg_click
--------- ---------- -----------
7 100 10.0000
3 200 9.0000
9 500 9.0000
10 400 9.0000
4 300 3.0000
すなわち。MAX(avg_click) を持つ company_id のみを保持します。