Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按天划分的汇总结果_Sql_Postgresql - Fatal编程技术网

Sql 按天划分的汇总结果

Sql 按天划分的汇总结果,sql,postgresql,Sql,Postgresql,我正在尝试编写一个查询,该查询每天返回多天数据的汇总数据。 比如说 | id | user_id | start |----|---------|------------------------------ | 1 | 1 | 2020-02-01T17:35:37.242+00:00 | 2 | 1 | 2020-02-01T13:25:21.344+00:00 | 3 | 1 | 2020-01-31T16:42:51.344+00:00 | 4

我正在尝试编写一个查询,该查询每天返回多天数据的汇总数据。 比如说

| id | user_id | start 
|----|---------|------------------------------
| 1  | 1       | 2020-02-01T17:35:37.242+00:00
| 2  | 1       | 2020-02-01T13:25:21.344+00:00
| 3  | 1       | 2020-01-31T16:42:51.344+00:00
| 4  | 1       | 2020-01-30T06:44:55.344+00:00
我希望得到的结果是一个函数,我可以传入一个用户ID和时区,或UTC偏移量,然后输出:

 | day     | count |
 |---------|-------|
 | 1/2/20  | 2     |
 | 31/1/20 | 1     |
 | 30/1/20 | 7     |
其中,计数是每天开始时间介于00:00:00.0000和23:59:59.9999之间的所有行-考虑到提供的UTC偏移量

我真的不知道从哪里开始编写这样的查询,我甚至不能想象从哪里开始,这让我的SQL思维有了很大的差距。我应该如何处理这样的事情?

您可以使用:

select date_trunc('day', start) as dte, count(*)
from t
where userid = ?
group by date_trunc('day', start)
order by dte;
如果要处理其他偏移,请将其构建到查询中:

select dte, count(*)
from t cross join lateral
     (values (date_trunc('day', start + ? * interval '1 hour'))) v(dte)
where userid = ?
group by v.dte
order by v.dte;

两个查询中的count之后似乎缺少右括号。