mysql - 如何在 SQL 中聚合列内的值?
问题描述
我无法解决这个问题,有什么帮助吗?
Batsman_detail 表有以下列,[Opposition (varchar), runs(int),dismissal(varchar),venue(varchar)]:
opposition
列中有可能的国家。runs
列有击球手在那场比赛中得分的数量。dimissal
列具有以下任何值被捕获/保住/用完/未用完。venue
列有举行比赛的体育场名称。
现在你应该写一个查询,这样输出表必须有击球手在对巴基斯坦、澳大利亚和斯里兰卡国家的一种解雇中出局的次数(原始表包含许多国家。),
示例输出格式:
opposition caught bowled runout notout
Pakistan 3 5 7 9
Australia 0 4 4 1
Sri Lanka 4 2 3 4
解决方案
您似乎想要条件聚合:
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
推荐阅读
- r - 如何在 image() R 中包含行和列名
- dataweave - 如何根据 mulesoft 数据编织中的列值放置顺序计数或索引?
- php - 使用 PHP 的 HTML 中的下拉列表
- javascript - 函数调用中的赋值
- php - 此路由不支持 GET 方法。支持的方法:HEAD。- 拉拉维尔 8
- javascript - 在javascript中添加属性
- javascript - “未捕获的 TypeError XXX 未定义”在方法中但不在构造函数中
- vbscript - SAP GUI 脚本通过警告消息循环
- ios - 为什么 WWDC 演讲建议在主线程上运行非 UIKit 代码来修复数据竞争?
- jquery - 获取 400:使用 asp.net 删除请求的错误请求