[英]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. 它会显示每个mapname
的MIN(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.