SQL:在用户中编号不同的日期

时间:2017-10-19 09:38:08

标签: mysql sql

我知道这个问题以前一定是被问过的,但是当我环顾四周时,我无法找到它。基本上我有一个第1列和第2列的表,我想知道如何构建该表的第3列:

user   date         number
---------------------------
 1     2017-08-22     1
 1     2017-08-22     1
 1     2017-09-12     2
 1     2017-09-12     2
 1     2017-10-15     3
 2     2017-05-23     1
 2     2017-07-24     2

有人有个主意吗?

1 个答案:

答案 0 :(得分:1)

除了Rownumber shenanigans之外的一个子查询可能会做到这一点:

SELECT
et.user,
et.date,
(SELECT COUNT(DISTINCT date) FROM exampleTable WHERE user = et.user AND date <= et.date) AS number
FROM exampleTable AS et 
ORDER BY user ASC;

这可以使number使不同日期的出现量低于或等于当前日期。

详细分类:

  • 您正在尝试为任何给定用户“排名”日期。
  • 因此,不计算一个日期的多次出现(COUNT(DISTINCT))
  • 每行的等级是低于或等于之前的唯一日期的数量

您可以在线试用here