我正在尝试识别在一段时间内总分没有变化的名称,以及那段时间的情况。
示例表:
+----------+--------+-------+
| Date | Name | Score |
+----------+--------+-------+
| 1/1/2016 | Frank | 55 |
| 1/1/2016 | John | 80 |
| 1/2/2016 | Frank | 60 |
| 1/2/2016 | John | 85 |
| 1/3/2016 | Frank | 60 |
| 1/3/2016 | John | 100 |
| 1/4/2016 | Frank | 60 |
| 1/4/2016 | John | 120 |
| 1/5/2016 | Frank | 60 |
| 1/5/2016 | John | 120 |
+----------+--------+-------+
预期输出:
+-------+------+
| Name | Days |
+-------+------+
| Frank | 4 |
| John | 2 |
+-------+------+
我一直想弄清楚如何做到这一点,但没有成功。我没有可展示的代码,因为它们都还没有接近成功,只会使问题变得困惑。
我该怎么做呢?
最佳答案
您需要将数据与分数分组,然后计算用户获得该分数的第一天和最后一天,检查:
SELECT DATEDIFF(last_day, first_day) + 1 AS days, name, score,
first_day, last_day
FROM (
SELECT
max(date_score) as last_day,
min(date_score) as first_day,
score,
name
FROM members
GROUP by score
) AS score
Date diff function返回两个 DATE
之间的差值,我们加一表示最后一天的分数。
在此处查看工作示例 link
关于mysql - 如何识别未随时间变化的条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318988/