sql Query查找表中特定事件的最大小时数

时间:2015-03-29 10:45:58

标签: sql hive hql

我有一个包含字段的表(crime-id int,crime_time timestamp,crime string,city string)

表中只有9种独特的罪行。我需要找到时间,即特定犯罪发生频率的最长时间。例如,如果抢劫造成大多数在10-11之间,则必须显示10或11 ...时间可以从00:00开始,在23:59结束

2 个答案:

答案 0 :(得分:0)

这应该这样做,但我还没有测试过(你可能必须找到我使用的postgres函数的hive等价物:extract(doc在这里可用:http://www.postgresql.org/docs/9.1/static/functions-datetime.html)。

SELECT max(nb), period
FROM (
    SELECT count(*) as nb, period
    FROM (
        SELECT crime_string, extract(hour from crime_time) as period
        FROM crimes
        WHERE crime_string = 'Robbery'
    )
    GROUP BY period
);

答案 1 :(得分:0)

viod回答几乎没问题。

但你需要一个小组来计算时间段内的抢劫。

还需要为子查询添加别名。

SELECT  period, max(nb)
FROM (
        SELECT extract(hour from crime_time) as period, count(*) as nb
        FROM crimes    
        WHERE crime_string = 'Robbery'
        GROUP BY extract(hour from crime_time)   
    ) as  subquery_alias
GROUP BY period