简体   繁体   English

使用mysql计数组

[英]Count group by using mysql

I'm trying to make some kind of "top" for some game stadistics 我正在尝试为某些游戏策略创建“顶部”

Table it's like this 桌子是这样的

mapname     authid  country     name    time    date    weapon  server

I've got this query, i think it's fine (lowest time per map it's shown) 我有这个查询,我认为很好(显示每张地图的最短时间)

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

and i'm getting results as 我正在得到结果

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

But now i'm trying to count that results, to get how many records does players listed before has 但是现在我要计算结果,以获取之前列出的球员有多少条记录

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

Unless name depends on mapname , your query is not correct: 除非name取决于mapname ,否则查询不正确:

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

It will show the MIN(time) for every mapname but there is no guarantee that it will show the relevant name with the minimum time. 它会显示每个mapnameMIN(time) ,但不能保证它会以最短的时间显示相关name

Use this instead (and notice the subquery): 改用它(并注意子查询):

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