mysql - 如何在mysql中求和

标签 mysql sql

我有一个关于sql的问题

我有一个表 'Player',我想要实现的是从 'Player' 创建一个新表 'Level',我用简单的 sql 完成的 nbPlayerPerLevel

select Level as LevelID,count(*) as nbPlayerPerLevel 
from Player
group by Level 
order by Level DESC 

但困扰我的是我怎么能像以前一样获得 totalPlayer,非常感谢

表:播放器

 playerID  Level 
   1          3  
   2          5
   3          10
   4          3
   5          5 
----> 

表格:级别

LevelID  nbPlayerPerLevel  totalPlayer
10             1              1
5              2              3
3              2              5

最佳答案

假设 totalPlay 是等于或高于给定级别的玩家数量,您需要:

SELECT
  p.Level AS LevelID,
  IFNULL(COUNT(DISTINCT p.playerID),0) AS nbPlayerPerLevel,
  IFNULL(COUNT(DISTINCT pp.playerID),0) AS totalPlayer
FROM
  Player AS p
  LEFT JOIN Player AS pp ON p.Level<=pp.Level
GROUP BY p.Level 
ORDER BY p.Level DESC 

SQLfiddle

关于mysql - 如何在mysql中求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458586/

相关文章:

mysql - 我如何通过选择查询获取所有表

sql - RDBM 中 NULL 的替代方法

java - 最佳SQL查询结果存储

php - MYSQL AES_DECRYPT 错误

stored-procedures - 如果用户未在前端输入,如何使用 MySql 过程根据某些输入过滤器显示结果而忽略其他过滤器?

mysql - 非典型查询、必要索引、优化

javascript - ExtJS/PHP/MySQL : Uncaught SyntaxError: Unexpected token ILLEGAL

java - 命名参数和位置参数之间的性能差异

sql - 在多个连接表上聚合函数

c# - 'System.Data.Entity.Migrations.DbMigrationsConfiguration` 1' 的类型初始值设定项抛出异常