繁体   English   中英

如何在sql中编写此查询

[英]how to write this query in sql

如何在sql中编写此查询:对于每位玩过两次以上游戏的玩家,请列出其姓名,获胜总额和每位玩家所玩游戏的数量。”结果应按获胜次数降序排列。

并且我在玩家表中具有以下属性:playerId,playerName,age,在游戏表中具有以下属性:gameId,playerId,结果请注意结果属性由(第一或第二或第三,或..或未显示)填充获胜者是结果第一的人

这是我的疑问,我没有正确的答案,但是我能做的就是所有。 任何想法

select playerName,count(*),count(*)
 from games,player
 where games.playerId=player.playerId
 group by games.results

您想与COUNT一起查看GROUP BYHAVING 这样的事情可能会做(未经测试):

SELECT
   p.playerName
   ,COUNT(g.*)
   ,SUM(g.Winnings)  -- you didn't name this column
FROM
   games g
   INNER JOIN ON g.playerId = p.playerId
WHERE
   g.results = 1     -- whatever indicates this player was the winner
GROUP BY
   p.playerName
HAVING
   COUNT(g.*) > 2

很难从问题中准确地找到您需要的东西,但是尝试这样的事情:

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(g.Winnings) Winnings        -- Sum of a Winnings attribute (dollars ??)
  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(g.Winnings)            -- sort the rows based on Player Winnings

如果用“获胜”来表示获胜的游戏次数,那么...

  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

SELECT-您要显示的数据
FROM-表格
在哪里-两个ID相互匹配
GROUP BY-游戏的PlayerID,因此所有计数都是正确的
拥有-确保他们玩了不止一场游戏
ORDER BY-按所需方式对结果进行排序。

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM