我正在尝试确定一段时间内总得分没有变化的名称,以及这段时间是什么。
示例表:
+----------+--------+-------+
| 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
该日期DIFF函数返回两者之间的区别DATE
的,我们添加一个代表该得分最后一天。
在这里查看有效的示例链接
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句