一例
--サンプルデータの準備 CREATE TEMPORARY TABLE `テーブル名`(name text, income int); INSERT INTO `テーブル名` VALUES ('C社',100),('C社',30),('C社',50),('B社',70),('A社',60),('A社',50); --求めるクエリ SET @n:=0; SELECT *, @n:= @n + 1 AS rank FROM ( SELECT name , avg(income) AS income FROM `テーブル名` GROUP BY name ORDER BY income DESC ) AS t ;
結果
name | income | rank |
---|---|---|
B社 | 70.0000 | 1 |
C社 | 60.0000 | 2 |
A社 | 55.0000 | 3 |
ソート順変更バージョン
SET @n:=0; SELECT * FROM ( SELECT *, @n:= @n + 1 AS rank FROM ( SELECT name , avg(income) AS income FROM `テーブル名` GROUP BY name ORDER BY income DESC ) AS t ) AS tt ORDER BY name ;
結果
name | income | rank |
---|---|---|
A社 | 55.0000 | 3 |
B社 | 70.0000 | 1 |
C社 | 60.0000 | 2 |