我有一个包含2列,日期和分数的表格.它最多有30个条目,过去30天每个条目一个.
date score
-----------------
1.8.2010 19
2.8.2010 21
4.8.2010 14
7.8.2010 10
10.8.2010 14
Run Code Online (Sandbox Code Playgroud)
我的问题是缺少一些日期 - 我想看到:
date score
-----------------
1.8.2010 19
2.8.2010 21
3.8.2010 0
4.8.2010 14
5.8.2010 0
6.8.2010 0
7.8.2010 10
...
Run Code Online (Sandbox Code Playgroud)
我需要从单个查询得到:19,21,9,14,0,0,10,0,0,14 ......这意味着缺少的日期用0填充.
我知道如何获取所有的值,并在服务器端语言迭代日期和错过空白.但这是否可以在mysql中进行,因此我按日期对结果进行排序并获取缺失的部分.
编辑:在此表中有另一列名为UserID,因此我有30.000个用户,其中一些在此表中有分数.如果日期<30天以前,我每天都会删除日期,因为我需要每个用户最近30天的分数.原因是我正在制作过去30天内用户活动的图表,并绘制图表我需要用逗号分隔的30个值.所以我可以在查询中告诉我USERID = 10203活动,查询会得到30分,过去30天每一分.我希望我现在更清楚了.
我正在从一个mysql表构建一个快速的csv,其查询如下:
select DATE(date),count(date) from table group by DATE(date) order by date asc;
Run Code Online (Sandbox Code Playgroud)
并通过以下方式将它们转储到perl中的文件:
while(my($date,$sum) = $sth->fetchrow) {
print CSV "$date,$sum\n"
}
Run Code Online (Sandbox Code Playgroud)
但是数据中存在日期差距:
| 2008-08-05 | 4 |
| 2008-08-07 | 23 |
Run Code Online (Sandbox Code Playgroud)
我想填充数据以填写零计数条目的缺失日期,最终得到:
| 2008-08-05 | 4 |
| 2008-08-06 | 0 |
| 2008-08-07 | 23 |
Run Code Online (Sandbox Code Playgroud)
我把一个非常笨拙(几乎肯定是错误的)的解决方法打包在一起,每个月都有一些日数和一些数学,但是在mysql或perl方面必须有更直接的东西.
面对为什么我这么愚蠢的任何天才想法/拍打?
我最终使用了一个存储过程,该过程为所讨论的日期范围生成临时表,原因如下:
perl Date/DateTime迭代答案也非常好,我希望我能选择多个答案!
我有一个表,其中一列为date. 每个日期可以有多个条目。
date .....
----------- -----
2015-07-20 ..
2015-07-20 ..
2015-07-23 ..
2015-07-24 ..
Run Code Online (Sandbox Code Playgroud)
我想使用 Django ORM 和 PostgreSQL 作为数据库后端以下列形式获取数据:
date count(date)
----------- -----------
2015-07-20 2
2015-07-21 0 (missing after aggregation)
2015-07-22 0 (missing after aggregation)
2015-07-23 1
2015-07-24 1
Run Code Online (Sandbox Code Playgroud)
WITH RECURSIVE date_view(start_date, end_date)
AS ( VALUES ('2015-07-20'::date, '2015-07-24'::date)
UNION ALL SELECT start_date::date + 1, end_date
FROM date_view
WHERE start_date < end_date )
SELECT start_date, count(date)
FROM date_view LEFT JOIN my_table ON date=start_date
GROUP BY …Run Code Online (Sandbox Code Playgroud) 我有mysql表名为user(id,name,join_on)join on是一个日期字段我想要的是每天显示已经创建了多少用途我可以使用group by但它只会给我用户获取的日期像日期一样添加
4/12/10 5 users added
4/13/10 2 users added
4/15/10 7 users added
Run Code Online (Sandbox Code Playgroud)
这里的日期4/14/10不见了,我希望在一个月内列出所有日期.我有一个解决方案,通过创建另一个表只用于添加日期,该表将在join_on上连接我的用户表并将给出总结果但我不想这样做,因为创建我需要创建和添加条目在日期表中,请建议采用不同的方法.
谢谢.
mysql ×3
sql ×2
calendar ×1
datediff ×1
django ×1
django-1.8 ×1
django-orm ×1
perl ×1
postgresql ×1