我有一个包含字段的表(crime-id int,crime_time timestamp,crime string,city string)
表中只有9种独特的罪行。我需要找到时间,即特定犯罪发生频率的最长时间。例如,如果抢劫造成大多数在10-11之间,则必须显示10或11 ...时间可以从00:00开始,在23:59结束
答案 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