【发布时间】:2020-11-05 07:15:34
【问题描述】:
问题:显示所有具有以下条件的玩家的姓名: 最小和最大游戏数之间的差异 此玩家大于 5。
select p.name
from player p
join competition c
on c.playerID = p.playerID
where (
(select count(*) from competition
where count(games) > 1
group by playerID
) - (
select count(*) from competition
where count(games) <= 1
group by playerID
))> 5;
我有点迷路了。我不太确定这是正确的方法,我应该如何进行:我应该使用 count 并找到最小和最大游戏数并与大于 5 进行比较,还是应该使用而不是 count、min 和 max 函数。如果有人能解释一下这个逻辑,将不胜感激。
表格:
player competition
------- --------
playerID playerID
name games
birthday date
address
telefon
【问题讨论】:
-
分享表格数据和预期结果
-
您在数(比赛),但比赛表中没有比赛?这是正确的表列吗?计数日期可以假定为游戏计数吗?
-
我编辑了表格中的乐谱,抱歉,我正在从德语翻译表格。游戏是指游戏的数量,例如游戏=2,游戏=15。 @allmhuran
-
好的,所以让我重新表述你的问题,看看我是否正确:玩家有一个独特的
playerId。一个玩家可以在给定的date上玩很多游戏。competition表有一个名为games的列,它存储给定playerId在给定date上玩的游戏数。找出该玩家在任何日期玩的最小游戏数与该玩家在任何日期玩的最大游戏数之间的差值大于 5 的玩家。正确吗? -
没错@allmhuran
标签: sql sql-server count max min