首页 > 解决方案 > 如何在 SQL 中聚合列内的值?

问题描述

我无法解决这个问题,有什么帮助吗?

Batsman_detail 表有以下列,[Opposition (varchar), runs(int),dismissal(varchar),venue(varchar)]:

现在你应该写一个查询,这样输出表必须有击球手在对巴基斯坦、澳大利亚和斯里兰卡国家的一种解雇中出局的次数(原始表包含许多国家。),

示例输出格式:

opposition                caught     bowled      runout      notout    
Pakistan                  3              5               7               9   
Australia                 0              4               4               1    
Sri Lanka                 4              2               3               4

标签: mysqlsqlgroup-bycountpivot

解决方案


您似乎想要条件聚合:

select opposition,
    sum(case when dismissal = 'caught'  then runs else 0 end) caught,
    sum(case when dismissal = 'bowled'  then runs else 0 end) bowled,
    sum(case when dismissal = 'run out' then runs else 0 end) run_out,
    sum(case when dismissal = 'not out' then runs else 0 end) not_out
from batsman
group by opposition

这对runs的每个值求和dismissal。如果您只想计算发生次数,那么:

select opposition,
    sum(dismissal = 'caught')  caught,
    sum(dismissal = 'bowled')  bowled,
    sum(dismissal = 'run out') run_out,
    sum(dismissal = 'not out') not_out
from batsman
group by opposition

推荐阅读