2016-02-12 151 views
0

我有一个时间序列的数据有一个trip_id和时间戳。我试图编写一个SQL查询来给我一天发生的唯一trip_id's的数量。计数不同的SQL,并在午夜时间戳与时间戳

问题是旅程延长到午夜,因为第二天来这次旅行被视为一个新的独特的价值,并使用此代码select date(Timestamp), COUNT(DISTINCT trip_id)计算两次。任何帮助或正确的方向适当的点将非常感激。

数据:

trip_id Timestamp 
47585  "2015-11-05 09:22:23" 
16935  "2015-11-05 12:34:28" 
16935  "2015-11-05 20:40:28" 
16935  "2015-11-05 23:09:24" 
16935  "2015-11-05 23:21:58" 
16935  "2015-11-06 00:22:05" 
15434  "2015-11-06 21:23:28" 

期望的结果

date    count    
2015-11-05  2 
2015-11-06  1 

回答

1

使用最低的时间戳的每一行:

select dte, count(*) 
from (select trip_id, min(date_trunc('day', timestamp)) as dte 
     from t 
     group by trip_id 
    ) t 
group by dte 
order by dte; 

也就是说,算上一天的行程开始时。

+0

你在答案 – minatverma

+0

@minatverma中是否遗漏了'minimum'。 。 。谢谢。 –