mysql - 在 SQL 中汇总数据
问题描述
大家好,我是新来的,我一直在我的 SQL 数据库中进行总结。
为了使示例非常简单,下面是我的数据。
GAME_ID GOALIEID SCORED
2001 5 N
2001 4 N
2001 5 Y
2001 4 N
2001 5 Y
这是一场枪战,我想总结一下 Game_ID、GoalieID 每个守门员的扑救次数,以及每个守门员实际扑救的次数。N=SAVE 和 Y=GOAL 放弃
我正在尝试按降序输出我的结果,如下所示:
GAME_ID GOALIEID SAVES
2001 4 2
2001 5 1
目前基于我的代码:
SELECT GAME_ID, GOALIEID, COUNT(SCORED) AS SAVES
FROM GIRAFFE.MLS
WHERE SCORED = 'N'
GROUP BY GAME_ID
ORDER BY COUNT (SCORED) DESC
但我得到的结果只是将所有扑救加起来,并将其归因于一名守门员,如下所示。
GAME_ID GOALIEID SAVES
2001 5 3
上述问题已解决。
最后一个问题是如何在 SQL 中查询 STREAK
例如:
GAME_ID GOALIEID TEAMID TEAMSHOTNUM OVERALLSHOT SCORED
2001 5 1 1 1 Y
2001 4 2 1 2 N
2001 5 1 2 3 N
2001 4 2 2 4 N
2001 5 1 3 5 N
2001 4 2 3 6 N
基于这个简单的例子:我如何查询最连续的“保存”,即“GoalieID”的“N”现在想象我的数据有多个游戏要查看,但为简单起见,我这里只有一个游戏。
我的结果我希望看起来像这样:
GAME_ID GOALIEID STREAK
2001 4 3
这将表明“GOALIEID”#4 进行了 3 次连续扑救以赢得比赛,这表明最高的连续扑救实际上是 3 次。请注意,这将跨越数千场比赛。但是我在这里只用了 1 场比赛就变得简单了。
谢谢大家的帮助!
解决方案
实际上你应该按 GAME_ID 和 GOALIEID 分组:
SELECT GAME_ID, GOALIEID, COUNT(SCORED) AS SAVES
FROM a
WHERE SCORED = 'N'
GROUP BY GAME_ID, GOALIEID
ORDER BY SAVES DESC
推荐阅读
- python - 如何在这里避免竞争条件
- java - 如何制作具有不可选择的预设选项的 JOptionPane 下拉列表?
- html - 在鼠标悬停在图像上时显示文本
- node.js - NodeJS MongoDB为什么findById()在启动和路由器POST中有效,但在我执行文件时无效
- java - Java ArrayList.add() 用最后一个对象覆盖整个列表
- c# - 如何在 .Net5 Windows 服务中从 RabbitMQ 获取发布的消息?
- laravel - 访问器覆盖自定义验证规则
- python - 如何修复 Foundry Nuke 运行时错误:Read1?
- node.js - SassError:复合选择器可能不再被扩展
- reactjs - 使用 yarn install 或 add 时防止包重建