我有一张像
这样的表格ID Name Points
1 A 10
1 A 11
1 B 11
1 B 12
1 C 12
1 C 13
2 A 8
2 A 9
2 B 9
2 B 10
2 C 10
2 C 11
我希望我的输出看起来像下面的
ID Average(A) Average(B) Average(C)
1 10.5 11.5 12.5
2 8.5 9.5 10.5
以下按查询分组显示输出但不是上述格式
Select Avg(Points),ID,name from table group by Name,ID
由于
答案 0 :(得分:2)
在子查询中包装现有查询将允许您围绕它构建数据透视表。 `MAX()
聚合的目的只是消除NULL
语句生成的CASE
,因此每个ID将多个行折叠为每个ID一行,每列中包含非NULL。
SELECT
ID,
MAX(CASE WHEN Name = 'A' THEN Points ELSE NULL END) AS `Average (A)`,
MAX(CASE WHEN Name = 'B' THEN Points ELSE NULL END) AS `Average (B)`,
MAX(CASE WHEN Name = 'C' THEN Points ELSE NULL END) AS `Average (C)`
FROM (
SELECT ID, AVG(Points) AS Points, Name FROM yourtable GROUP BY Name, ID
) avg_subq
GROUP BY ID