我有点习惯SQL,但我需要你的帮助来编写我认为是复杂表达式的东西。这是上下文。我有一个记录表,其中包含简化记录ID(record_id),呼叫时间(call_time)和计划时间(dial_schedule_time)。 我试图按时间分列记录数。为了让您了解我想要实现的目标,我的查询结果应该返回如下内容:
Now |8 |9 |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |20 |
xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |xxx |
其中xxx表示在一天中按时间范围分组的record_id的计数。要指定,“Now”表示call_time为null或dial_schedule_time值低于当前日期的record_id的计数(不包括当天的小时,因此,例如,如果它是在我运行查询的时刻25/01 @ 10am,“Now”将是record_id的计数,其中call_time为null或dial_schedule_time为< 25/01)。其他的(8,9,10 ......)表示record_id的计数,其中dial_sched_time在今天的8-9之间,今天的9-10,今天的10-11 ...... 为了使事情变得更加困难,dial_sched_time是一个UNIX时间戳,并且需要在考虑到这是新西兰时间的情况下进行分组(例如1474431093是2016年9月21日格林威治标准时间04:11但是2016年9月21日16 :11 NZT)。
我真的不知道从哪里开始,所以任何帮助都会非常感激。
谢谢:)
示例数据:
record_id call_time dial_sched_time
447495 1475887698 1485324000
447492 1479705246 1485320400
447488 NULL 1366005540
447485 NULL 1367193360
447482 NULL 1366701480
447478 NULL 1366705440
447476 NULL 1370502240
447471 NULL 1367816160
447469 NULL 1367564640
447468 1479705267 1485320400
447467 1476680578 1485320400
447466 NULL 1368767580
447531 1479169276 1479180158
447530 1479169360 1479180189
447529 NULL 1369105020
答案 0 :(得分:0)
要将Unix时间戳转换为SQL日期格式,请尝试使用dateadd(s,@ UnixTimestamp,'1970-01-01')。 例如dateadd(s,1474431093,'1970-01-01')= 2016-09-21 04:11:33.000 现在,您可以使用group by over datepart(hh,dateadd(s,field_UnixTimestamp,'1970-01-01'))和COUNT()子句来获取每小时的调用次数。
我希望我帮助过你。