多组mysql计数

多组mysql计数,mysql,group-by,count,Mysql,Group By,Count,嗯。我真的不知道我想要的是不是可以通过我建桌子的方式实现。让我解释一下 我有这张桌子 CREATE TABLE `kill_log` ( `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `killer_cid` int(11) NOT NULL, `killed_cid` int(11) NOT NULL, `map` varchar(25) NOT NULL DEFAULT '', KEY `killer_ci

嗯。我真的不知道我想要的是不是可以通过我建桌子的方式实现。让我解释一下

我有这张桌子

CREATE TABLE `kill_log` (
  `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `killer_cid` int(11) NOT NULL,
  `killed_cid` int(11) NOT NULL,
  `map` varchar(25) NOT NULL DEFAULT '',
  KEY `killer_cid` (`killer_cid`),
  KEY `killed_cid` (`killed_cid`)
)
当有人在游戏中杀了人,它会被注册,在每个月底,我需要通过计算杀了多少人和他被杀了多少次来计算获胜者

我试着和小组建立一个查询,但我不知道如何计算他被杀了多少次

SELECT killer_cid as char_id, count(killer_cid) as kills
FROM kill_log
WHERE `time` >= (NOW() - INTERVAL 30 DAY)
GROUP BY killer_cid
ORDER BY count(killer_cid) DESC
但我真正需要的是展示

char_id  |  kills  |  deaths  |  points (kills - deaths)
我怎么能这样做?我是否应该创建一个不同的表并以另一种方式注册内容


我想我可以在他们被杀和死亡的时候进行登记,然后根据
char\u id
进行分组,统计他们是被杀还是死亡。。但是这种方法可行吗?

事实上,我更喜欢你的答案,所以我刚刚删除了我的答案+1@eggyal,我很感激。谢谢,谢谢,伙计,太好了。。我不知道我可以这样使用。如果cid没有杀人(但被杀了),这不会失败吗?是的,但是如果是为了一个顶级名单,那没关系,如果不是你和eggyal answar工作的话
select
 killer.killer_cid as cid,
 count(distinct killer.killed_cid, killer.time) as kills,
 count(distinct killed.killer_cid, killed.time) as died,
 count(distinct killer.killed_cid, killer.time) - count(distinct killed.killer_cid, killed.time) as points
from kill_log as killer
left join kill_log as killed (killer.killer_cid = killed.killed_cid)
group by killer.killer_cid
SELECT U.char_ID, SUM(U.kills) as kills, SUM(U.killed) as deaths, SUM(U.kills)- SUM(U.killed) as points FROM
(
SELECT killer_cid as char_id, count(killer_cid) as kills, 0 as killed
FROM kill_log
WHERE `time` >= (NOW() - INTERVAL 30 DAY)
GROUP BY killer_cid
ORDER BY count(killer_cid) DESC

UNION

SELECT killed_cid as char_id,0 AS kills, count(killer_cid) as killed
FROM kill_log
WHERE `time` >= (NOW() - INTERVAL 30 DAY)
GROUP BY killed_cid
ORDER BY count(killer_cid) DESC
) AS U
GROUP BY U.char_ID
ORDER BY SUM(U.kills)- SUM(U.killed) DESC