如何在sql中编写此查询
如何在sql中编写此查询: 对于每名玩过两次以上游戏的玩家,请列出玩家姓名、赢取的总金额和每名玩家玩过的游戏数”。结果应按赢取的金额降序排列 我在玩家表中有以下属性: playerId,playerName,age 在游戏表中,这些属性: gameId、playerId、results注意结果属性由(第一个或第二个或第三个或,…,或不显示)填写获胜者是结果=第一个的人 这是我的问题,我没有得到正确的答案,但这就是我所能做的。知道吗如何在sql中编写此查询,sql,mysql,Sql,Mysql,如何在sql中编写此查询: 对于每名玩过两次以上游戏的玩家,请列出玩家姓名、赢取的总金额和每名玩家玩过的游戏数”。结果应按赢取的金额降序排列 我在玩家表中有以下属性: playerId,playerName,age 在游戏表中,这些属性: gameId、playerId、results注意结果属性由(第一个或第二个或第三个或,…,或不显示)填写获胜者是结果=第一个的人 这是我的问题,我没有得到正确的答案,但这就是我所能做的。知道吗 select playerName,count(*),count
select playerName,count(*),count(*)
from games,player
where games.playerId=player.playerId
group by games.results
您希望查看并结合COUNT
。类似的操作可能会执行(未测试):
您希望查看并结合COUNT
。类似的操作可能会执行(未测试):
很难从你的问题中准确地收集到你需要的东西,但试着这样做:
select playerName, count(*)
from games g
join player p ON g.playerId = p.playerId
group by playerName
having count(*) > 2
order by games.results DESC
很难从你的问题中准确地收集到你需要的东西,但试着这样做:
select playerName, count(*)
from games g
join player p ON g.playerId = p.playerId
group by playerName
having count(*) > 2
order by games.results DESC
*试试这个(就像你用英语说的那样…(如果“赢款”是游戏中赢得的金额),则: 如果“赢”是指赢了多少场比赛,那么
Select playerName, Count(*) Games, -- Number of game records per player
Sum(Case g.WonTheGame -- or whatever attribute is used
When 'Y' Then 1 -- to specify that player won
Else 0 End) Wins -- Output in one row per Player
From player p Join Games g -- from the two tables
On g.PlayerId = p.PlayerId -- connected using PlayerId
Group by p.playerName -- Output in one row per Player
Having Count(*) > 2 -- only show players w/more than 2 games
Order By Sum(Case g.WonTheGame -- Sort by Number of games Won
When 'Y' Then 1
Else 0 End)
*试试这个(就像你用英语说的那样…(如果“赢款”是游戏中赢得的金额),则: 如果“赢”是指赢了多少场比赛,那么
Select playerName, Count(*) Games, -- Number of game records per player
Sum(Case g.WonTheGame -- or whatever attribute is used
When 'Y' Then 1 -- to specify that player won
Else 0 End) Wins -- Output in one row per Player
From player p Join Games g -- from the two tables
On g.PlayerId = p.PlayerId -- connected using PlayerId
Group by p.playerName -- Output in one row per Player
Having Count(*) > 2 -- only show players w/more than 2 games
Order By Sum(Case g.WonTheGame -- Sort by Number of games Won
When 'Y' Then 1
Else 0 End)
试试这个:
SELECT playerName, COUNT(g.PlayerID) as NumberOfPlays
FROM games g ,player p
WHERE g.playerId=p.playerId
GROUP BY g.PlayerID
HAVING COUNT(g.PlayerID) > 1
ORDER BY g.results DESC
选择-要显示的数据来自-表格
其中-两个ID相互匹配
分组游戏玩家ID,因此所有计数都是正确的
已经-确保他们玩了不止一个游戏
按顺序-按您想要的方式对结果进行排序。
尝试以下方法:
SELECT playerName, COUNT(g.PlayerID) as NumberOfPlays
FROM games g ,player p
WHERE g.playerId=p.playerId
GROUP BY g.PlayerID
HAVING COUNT(g.PlayerID) > 1
ORDER BY g.results DESC
select
playerName,
sum(if(games.result = 'first',1,0)) as wins,
count(*) as gamesPlayed
from player
join games on games.playerId = player.playerId
group by games.results
having count(*) > 2
order by count(*) desc;
选择-要显示的数据来自-表格
其中-两个ID相互匹配
分组游戏玩家ID,因此所有计数都是正确的
已经-确保他们玩了不止一个游戏
按您希望的方式排序结果。
我没有看到与赢款相关的列。如果您提供表格的模型和您希望看到的结果集,我们可能会更好地帮助您。确定结果如下:playerId他赢了游戏多少次他打了多少次辫子,就像我说的那样简单:)您仍然没有很好地说明这一点。有四个答案是由具有10k+平均代表的用户回答的,没有人理解您的需求。请提供一个表数据和结果模型。我没有看到与赢款相关的列。如果您提供一个表模型和您希望看到的结果集,我们可能能够更好地帮助您.好的,结果如下:playerId他赢了多少次比赛他打了多少次球就像我说的那样简单:)你仍然没有很好地说明这一点。有四个答案是10k+平均代表的用户对OP的回答,没有人理解你的需求。请提供表格数据和结果模型。但是没有列赢家,只有我有first和player ID等结果。那么“按赢家排序”是什么意思"? 按赢得的比赛数排序?如果是这样,请删除
SUM
并抛出一个orderby
,其中包含COUNT
子句(如果您确认是这种情况,我可以在中进行编辑),但您可以通过查看所有行并查看谁拥有“first”来检索winer在比赛结果中,科勒将每个球员都拿出来,然后数一数他在比赛结果中的排名,这对我来说是个问题。我喜欢你的答案,但如果你考虑我说的话,这将是有益的:“那些有最多成绩的人= FiStOK的结果如下:PrimeRID他赢了多少次比赛,多少次他像我说的一样简单,但是没有列奖金,只有我的结果,比如第一个和球员idThen,你指的是什么?“按奖金排序”?按赢得的比赛数排序?如果是这样,请删除SUM
并抛出一个orderby
,其中包含COUNT
子句(如果您确认是这种情况,我可以在中进行编辑),但您可以通过查看所有行并查看谁拥有“first”来检索winer在比赛结果中,科勒将每个球员都拿出来,然后数一数他在比赛结果中的排名,这对我来说是个问题。我喜欢你的答案,但如果你考虑我说的话,这将是有益的:)那些有最多成绩的人= FiStOK的结果如下:PrimeRID他赢了多少次比赛,多少次他像我说的那样简单,这将只返回球员的名字,但是我看了他赢了多少场比赛以及他玩了多少场比赛,结果如下:playerId他赢了多少场比赛他打了多少场比赛,就像我说的那么简单这只会返回球员的名字,他赢了多少次比赛他打了多少次比赛我说得很简单你能解释一下你写了什么吗?你能解释一下结果吗?他赢了多少次比赛他打了多少次比赛我说得很简单你能解释一下吗你所写的内容如下:playerId多少次他赢了这场比赛多少次他打得跟我说的一样简单结果如下:playerId多少次他赢了这场比赛多少次他打得跟我说的一样简单结果如下:playerId多少次他赢了这场比赛多少次他打得跟我说的一样简单
select
playerName,
sum(if(games.result = 'first',1,0)) as wins,
count(*) as gamesPlayed
from player
join games on games.playerId = player.playerId
group by games.results
having count(*) > 2
order by count(*) desc;