在SQL中汇总数据

时间:2018-10-11 16:11:57

标签: mysql

大家好,我是新来的,我只能在SQL数据库中进行总结。

为使示例非常简单,以下是我的数据。

GAME_ID       GOALIEID       SCORED
2001             5             N
2001             4             N
2001             5             Y
2001             4             N
2001             5             Y 

这是点球大战,我想总结一下Game_ID,GoalieID所产生的每个守门员的保存量,以及每个人实际进行了多少保存。 N =保存,Y =目标放弃

我正尝试按降序输出结果,如下所示:

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

以上已解决。

最终确定THI的问题是如何在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个游戏就使它变得简单。

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:0)

实际上,您应该按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