mysql - 如何识别未随时间变化的条目?

标签 mysql sql

我正在尝试识别在一段时间内总分没有变化的名称,以及那段时间的情况。

示例表:

+----------+--------+-------+
|   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/

相关文章:

mysql - Oracle 替换函数

MYSQL GROUP BY 2 个表

SQL:计算学生就读的不同学校的数量

sql - sql中对的分组

mysql - 将价格的整数表示形式转换为 double 表示形式

mysql - 每次使用不同的用户连接到数据库

mysql - cakephp 从自引用表中删除时抛出错误

php - SQL语法接近,没有正确使用

mysql - 在同一列上使用多个WHERE条件进行选择

MySQL:计算不同表行中两个时间戳的差异