Oracle分组查询需求:统计cricket表各参赛队伍的参赛次数
Oracle统计各队伍参赛次数的SQL实现
要统计cricket表中各队伍的参赛次数,需要将team1和team2列的队伍数据合并后分组计数,同时统一队伍名称格式以匹配期望输出:
实现SQL
SELECT INITCAP(team) AS team, COUNT(*) AS match_count FROM ( SELECT team1 AS team FROM cricket UNION ALL SELECT team2 AS team FROM cricket ) all_teams GROUP BY INITCAP(team) ORDER BY team;
代码说明
- UNION ALL:合并
team1和team2的所有队伍记录,保留重复项(同一队伍在两列出现的次数需全部计入参赛次数) - INITCAP():将队伍名称转换为首字母大写、其余小写的格式,匹配期望输出的样式(如
INDIA转为India,SA转为Sa) - GROUP BY:按格式化后的队伍名称分组,统计每组的记录数即参赛次数
- ORDER BY:按队伍名称排序,让结果排列更规整
执行结果
执行上述SQL后,将得到与期望一致的输出:
Team Match_Count India 2 SL 1 Sa 1 Eng 2 Aus 2
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

