我有一个包含字段的表(清单-id int、crime_time时间戳、犯罪字符串、城市字符串)
表中只有9种独特的犯罪。我需要找出某一特定犯罪发生的时间(以最大次数计)。如果抢劫案是在10-11之间造成的,它必须显示10或11 .时间可能从00:00开始,到23:59结束。
发布于 2015-03-29 13:28:27
维奥德的答案几乎是正常的。
但你需要一组人才能把抢劫案算上时隙。
还需要为子查询放置别名。
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
发布于 2015-03-29 11:48:13
这应该可以,但是我还没有对它进行测试(而且您可能需要找到我使用的postgres函数的单元格对应物: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
);
https://stackoverflow.com/questions/29328159
复制相似问题