SQL:按某列的日期和范围获取数据
SQL: Get data by date and range of a column
我在下面有一个名为 'Library' 的 MySQL table,包含三列。我需要计算每个日期的 dwell_time 范围。我需要的范围是 0-30、31-60、61-90 和 91-100。
Id Date dwell_time
1 2015-05-10 27
2 2015-05-10 28
3 2015-05-10 32
4 2015-05-10 65
5 2015-05-11 27
6 2015-05-11 28
7 2015-05-11 65
应该return
2015-05-10 0-30 2
2015-05-10 31-60 1
2015-05-10 61-90 1
2015-05-11 0-30 2
2015-05-11 61-90 1
你能帮忙解决我需要使用的查询吗?
SELECT
date,
date_range,
count(1)
FROM (
SELECT
date,
CASE
WHEN dwell_time BETWEEN 0 AND 30 THEN '0-30'
WHEN dwell_time BETWEEN 31 AND 60 THEN '31-60'
WHEN dwell_time BETWEEN 61 AND 90 THEN '61-90'
ELSE '90-100'
END AS date_range
FROM Library) lib
GROUP BY date, date_range
编辑(戈登,因为我在评论中被问到):
SELECT date,
(CASE WHEN dwell_time BETWEEN 0 AND 30 THEN '0-30'
WHEN dwell_time BETWEEN 31 AND 60 THEN '31-60'
WHEN dwell_time BETWEEN 61 AND 90 THEN '61-90'
ELSE '90-100'
END) AS date_range,
COUNT(*)
FROM Library l
GROUP BY date, date_range
ORDER BY date, date_range;
Here 是 SQL Fiddle.
我在下面有一个名为 'Library' 的 MySQL table,包含三列。我需要计算每个日期的 dwell_time 范围。我需要的范围是 0-30、31-60、61-90 和 91-100。
Id Date dwell_time 1 2015-05-10 27 2 2015-05-10 28 3 2015-05-10 32 4 2015-05-10 65 5 2015-05-11 27 6 2015-05-11 28 7 2015-05-11 65
应该return
2015-05-10 0-30 2 2015-05-10 31-60 1 2015-05-10 61-90 1 2015-05-11 0-30 2 2015-05-11 61-90 1
你能帮忙解决我需要使用的查询吗?
SELECT
date,
date_range,
count(1)
FROM (
SELECT
date,
CASE
WHEN dwell_time BETWEEN 0 AND 30 THEN '0-30'
WHEN dwell_time BETWEEN 31 AND 60 THEN '31-60'
WHEN dwell_time BETWEEN 61 AND 90 THEN '61-90'
ELSE '90-100'
END AS date_range
FROM Library) lib
GROUP BY date, date_range
编辑(戈登,因为我在评论中被问到):
SELECT date,
(CASE WHEN dwell_time BETWEEN 0 AND 30 THEN '0-30'
WHEN dwell_time BETWEEN 31 AND 60 THEN '31-60'
WHEN dwell_time BETWEEN 61 AND 90 THEN '61-90'
ELSE '90-100'
END) AS date_range,
COUNT(*)
FROM Library l
GROUP BY date, date_range
ORDER BY date, date_range;
Here 是 SQL Fiddle.