我有下表:
user_id document_id date
------------------------------------
1 1 2016-01-01
1 2 2016-01-01
1 3 2016-01-02
2 4 2016-01-01
2 5 2016-01-02
3 6 2016-01-02
3 7 2016-01-02
3 8 2016-01-02
3 9 2016-01-03
3 10 2016-01-03
3 11 2016-01-04
3 9 2016-01-04
我想概述一下:(a)表格中的每一天(b)每位用户阅读了多少文件,如下:
date user_id document_count
---------------------------------------
2016-01-01 1 2
2016-01-01 2 1
2016-01-01 3 0
2016-01-02 1 1
2016-01-02 2 1
2016-01-02 3 3
2016-01-03 1 0
2016-01-03 2 0
2016-01-03 3 2
2016-01-04 1 0
2016-01-04 2 0
2016-01-04 3 2
我只知道如何通过按日期分组来获取每天(1)文档或(2)每天用户的结果,并对另一方进行计数。但是在这里我必须按用户和日期分组,我不知道该怎么做。
出于学习目的,我如何才能实现以下相关结果?它可能需要不同的分组顺序,但我不确定。
user_id date document_count
--------------------------------------
1 2016-01-01 1
1 2016-01-02 1
1 2016-01-03 0
1 2016-01-04 0
2 2016-01-01 1
2 2016-01-02 1
2 2016-01-03 0
2 2016-01-04 0
3 2016-01-01 0
3 2016-01-02 3
3 2016-01-03 2
3 2016-01-04 2
非常感谢任何帮助。
答案 0 :(得分:2)
这很棘手,因为“0”计数。也就是说,您需要一个没有输入的输出行。
您的问题明确指出您只关心数据中的日期。这很方便 - 无需生成日期。
第一步是使用CROSS JOIN
生成所有输出行。第二种方法是使用LEFT JOIN
和GROUP BY
来获取您想要的信息:
select d.date, t.user_id, count(*)
from (select distinct date from t) d cross join
(select distinct user_id from t) u left join
t
on t.date = d.date and t.user_id = u.user_id
group by d.date, t.user_id
order by d.date, t.user_id;
答案 1 :(得分:1)
请检查以下SELECT脚本
"int"
您好, 我已经通过添加DATES表更新了上面的SELECT 请查看下面的SQL脚本
contours,hierarchy = cv2.findContours(dst,1,2)
cnt = contours[0]
l = len(contours)
print l
li = list(contours)
print li
如果您想获得针对您的案例创建日期表的详细信息,可以使用递归CTE表达式检查SQL教程如何create dates table in SQL Server