sql 查询以查找 table 中特定事件的最大小时数
sql Query to find the maximium hour of particular event in table
我有一个 table 字段(犯罪 ID 整数,crime_time 时间戳,犯罪字符串,城市字符串)
table 中只有 9 种独特的犯罪行为。我需要找到时间,即特定犯罪发生频率最高的时间。例如,如果抢劫的原因最多在 10-11 之间,则它必须显示 10 或 11 ...时间可能从 00:00 开始到 23:59
结束
这应该可以,但我还没有测试过(您可能必须找到我使用的 postgres 函数的 hive 等价物:extract
(此处提供文档: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
);
viod回答差不多就ok了
但是需要一个group by来统计时间段内的抢劫
还需要为子查询设置一个别名。
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
我有一个 table 字段(犯罪 ID 整数,crime_time 时间戳,犯罪字符串,城市字符串)
table 中只有 9 种独特的犯罪行为。我需要找到时间,即特定犯罪发生频率最高的时间。例如,如果抢劫的原因最多在 10-11 之间,则它必须显示 10 或 11 ...时间可能从 00:00 开始到 23:59
结束这应该可以,但我还没有测试过(您可能必须找到我使用的 postgres 函数的 hive 等价物:extract
(此处提供文档: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
);
viod回答差不多就ok了
但是需要一个group by来统计时间段内的抢劫
还需要为子查询设置一个别名。
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