MySQL按分组统计并将结果横向显示

5

假设我有以下表格:

1) tblScore

============================ 
Date      VendorID     Score 
============================ 
12/09/01  12001        A     
12/09/01  12001        A     
12/09/01  12002        B     
12/09/02  12003        C     
12/09/02  12003        A     
12/09/03  12001        C     
============================ 

我有这个查询:

SELECT ts.VendorID, ts.Score, COUNT(*)
FROM trxscore ts
GROUP BY ts.VendorID, ts.Score
ORDER BY ts.VendorID, ts.Score

但是如何展示表格像这样:
===========================
VendorID    A    B    C
===========================
12001       2    0    1
12002       0    1    0 
12003       1    0    1
===========================

另外,从文本中获取平均值是否可能?例如:VendorID 12001 应该获得 A 的平均值。谢谢...


我不明白你计算平均值的方式。你能再解释一下吗? - swingNoobie
1个回答

8

试试这个:

SELECT  VendorID,
        SUM(CASE WHEN Score = 'A' THEN 1 ELSE 0 END) totalA,
        SUM(CASE WHEN Score = 'B' THEN 1 ELSE 0 END) totalB,
        SUM(CASE WHEN Score = 'C' THEN 1 ELSE 0 END) totalC
FROM    tableName
GROUP BY VendorID

SQLFiddle演示


谢谢,它运行得很好! :) 顺便问一下,能否从那个分数中得到平均值? - mrjimoy_05
不客气,顺便问一下,你所说的平均数是什么意思?例如,12001 应该得到 1 吗? - John Woo
不,它的意思是:当12001得分为A、A、A、B、C、C时,平均值应该是A。不是平均值,而是最大值,抱歉... - mrjimoy_05
1
没错。感谢您耐心回答我的追问。 :) - mrjimoy_05

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接