sql查询分成15分钟

时间:2011-12-19 11:40:58

标签: sql tsql stored-procedures

拥有一个包含datetime_in,datetime_out,card_id,group的表。知道我想要输出以下事项:

group  ; date       ;  quarterTime    ; persons_in ; hours
group1 ; 17-02-2010 ; 00:00 - 00:15  ; 0          ; 0
group1 ; 17-02-2010 ; 00:15 - 00:30  ; 0          ; 0
group1 ; 17-02-2010 ; 00:30 - 00:45  ; 0          ; 0
~etc
group1 ; 17-02-2010 ; 13:00 - 12:15  ; 334        ; 1483

end then the same for all the groups starting with 00:00 until 23:45

因此对于当天的每个出租车我想要一个记录,按组,日期(以天为单位)和季度时间分组。然后在people_in中我希望记录计数在该季度内,并且在几个小时内,当天总共有多少人工作小时,直到当前季度结束。因此,每天只能获得更高和更高,而people_in只计算在该季度内。所以我的问题是,我现在有一个非常脏的C#脚本这样做,为了优化我想运行只有1个查询。

我不介意使用存储过程,但由于我在sql中不是很好,我更喜欢T-SQL。

任何人都知道如何做到这一点?例子吗

1 个答案:

答案 0 :(得分:2)

您可以使用此逻辑转换分组日期:

SELECT 
        CONVERT(bigint,Year(GETDATE())) * power(10,7) +
        Month(GETDATE()) * POWER(10,5) +
        Day(GETDATE()) * POWER(10,3) +
        Datepart(hh,GETDATE()) * POWER(10,1) +
        DATEPART(mi,GETDATE()) / 15 AS Agg_Date

19/12/2011 13:31 => 20111219132

每15分钟都有相同的密钥。