【发布时间】:2014-07-17 00:46:05
【问题描述】:
所以我有一个表格,里面有一个分数系统。它看起来沿着这条线:
列:
ID Name Date Points
1 Peter 2014-07-15 5
2 John 2014-07-15 6
3 Bill 2014-07-15 3
等等……
每天都会将新结果放入表格中,并累积总积分,但是为了能够获得历史值,将结果放入新行中。所以在 2014-07-16,表格将如下所示:
ID Name Date Points
1 Peter 2014-07-15 5
2 John 2014-07-15 6
3 Bill 2014-07-15 3
4 Peter 2014-07-16 11
5 John 2014-07-16 12
6 Bill 2014-07-16 3
但是有时候当玩家一整天没有参加并且没有获得任何积分时,他仍然会被添加,但积分会保持不变(这里以比尔)。
我的问题是如何计算每种类型玩家的数量 (活跃 - 彼得和约翰,即当积分值从一个日期更改为另一个日期和不活跃 - 比尔,即当点值保持不变)。
我设法让这个查询只选择具有相同价值的球员,但它给了我球员名单而不是人数。虽然我可能对这个查询有误:
SELECT Points, name, COUNT(*)
FROM points
WHERE DATE(Date) = '2014-07-15' OR DATE(Date) = '2014-07-16'
GROUP BY Points
HAVING COUNT(*)>1
我不知道如何计算行数(可以使用 PHP 绕过技巧来获取行数,但只对 SQL 感兴趣)或如何反转它,以获取拥有不同的分数(同样,可以获得总行数,然后减去上述数字,但对此也不感兴趣 - 我更喜欢 SQL)。
提前致谢。
【问题讨论】: