繁体   English   中英

使用mysql计数组

[英]Count group by using mysql

我正在尝试为某些游戏策略创建“顶部”

桌子是这样的

mapname     authid  country     name    time    date    weapon  server

我有这个查询,我认为很好(显示每张地图的最短时间)

SELECT name, min( time ) AS time
FROM kz_pro15
GROUP BY mapname ASC

我正在得到结果

name    time
Santaaa     907.75
Zimmek*     184.82
:d  34.35
waldoo  1.04
Epiphany    8.54
Lovvon  185.51
Epiphany    64.53
menqz   73.67
waldoo  93.97
KoLkkE  207.83
q[o__o]p    78.35
Ulysses gc     T! CS    154.01
sasuke FTW  151.17
sasuke FTW  41.62
Santaaa     80.38
Santaaa     196.95
JonyBu  135.56
tiBU    93.12
Santaaa     122.04
Santaaa     36.08
EzzeqL  149.14
Zeqqe   106.75
bondiO^     110.68
INJUNABLES  102.09
Sublime     72.15
Player  106.11
=(M4t1ttU)=     158.95
foo conscience  80.98
gabe    27.21
gabe    58.5

但是现在我要计算结果,以获取之前列出的球员有多少条记录

gabe      2
sublime   1
player   13
SELECT name, count(*)
FROM (
 SELECT name, min( time ) AS time
 FROM kz_pro15
 GROUP BY mapname ASC 
) AS x
GROUP BY name

除非name取决于mapname ,否则查询不正确:

SELECT name, min( time ) AS time
FROM kz_pro15
GROUP BY mapname ASC

它会显示每个mapnameMIN(time) ,但不能保证它会以最短的时间显示相关name

改用它(并注意子查询):

SELECT k.name
     , COUNT(*) AS cnt
FROM kz_pro15 AS k
  JOIN
    ( SELECT mapname 
           , MIN(time) AS time
      FROM kz_pro15
      GROUP BY mapname
    ) AS g
    ON (g.mapname, g.time) = (k.mapname, k.time)
GROUP BY k.name

SELECT名称,min(time)AS时间,count(*)AS记录FROM kz_pro15 GROUP BY name ASC

暂无
暂无

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

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