【发布时间】:2021-02-12 21:57:49
【问题描述】:
提供的表格显示了在特定日期注册的所有新用户,格式为YYYY-MM-DD。
您的查询应该输出从一个月到下一个月的变化。因为第一个月没有前一个月,所以您的输出应该跳过该行。您的输出应如下表所示。
我的表格数据
表格数据:
ID DateJoined
1 2017-01-06
2 2017-01-12
3 2017-01-16
4 2017-01-25
5 2017-02-05
6 2017-02-07
7 2017-02-21
8 2017-03-05
9 2017-03-07
10 2017-03-14
11 2017-03-16
12 2017-03-25
13 2017-03-25
14 2017-03-25
15 2017-03-25
16 2017-03-26
17 2017-04-05
18 2017-04-14
19 2017-04-21
20 2017-05-07
23 2017-05-14
24 2017-05-16
25 2017-05-25
26 2017-05-25
27 2017-05-25
28 2017-05-25
我想要这个输出: 统计每个月的所有记录,然后从下个月的记录中减去。
这是我的查询:
SELECT
MONTH(L.joindate),
COUNT(L.joindate) - COUNT(R.joindate),
MONTH(R.joindate),
COUNT(R.joindate)
FROM
userlog AS L
LEFT JOIN
userlog AS R
ON MONTH(R.joindate)= (SELECT MIN(MONTH(joindate)) FROM userlog WHERE MONTH(joindate) < MONTH(L.joindate))
GROUP BY (MONTH(L.joindate)),(MONTH(R.joindate));
【问题讨论】:
-
使用 LEAD/LAG 功能。
-
Please do not upload images of code/errors when asking a question.。将您的表格作为文本粘贴到您的请求中。它已经用表格边框格式化了,所以这实际上只是复制和粘贴。
标签: mysql sql count subquery aggregate-functions