如何计算 sql 中的范围?
How to I count a range in sql?
我有一个如下所示的数据:
$ Time : int 0 1 5 8 10 11 15 17 18 20 ...
$ NumOfFlights: int 1 6 144 91 504 15 1256 1 1 578 ...
时间列就是 24 小时制。从0一直到2400
我希望得到的是:
hour | number of flight
-------------------------------------
1st | 240
2nd | 223
... | ...
24th | 122
第 1 个小时是从午夜到凌晨 1 点,第二个小时是凌晨 1 点到凌晨 2 点,依此类推直到最后的 24 日,即从晚上 11 点到午夜。而航班数量就是范围内的NumOfFlights的总和。
我试过:
dbGetQuery(conn,"
SELECT
flights.CRSDepTime AS Time,
COUNT(flights.CRSDepTime) AS NumOnTimeFlights
FROM flights
GROUP BY CRSDepTime/60
")
但我意识到不能这样做。我得到的结果将有 40 个时间值。
> head
Time NumOnTimeFlights
1 50 6055
2 105 2383
3 133 674
4 200 446
5 245 266
6 310 34
> tail
Time NumOnTimeFlights
35 2045 48136
36 2120 103229
37 2215 15737
38 2245 36416
39 2300 15322
40 2355 8018
如果您的 CRSDepTime
列是像 HHmm
这样的整数编码时间,那么 CRSDepTime/100
将提取小时。
SELECT
CRSDepTime/100 AS hh,
COUNT(flights.CRSDepTime) AS NumOnTimeFlights
FROM flights
GROUP BY CRSDepTime/100
我有一个如下所示的数据:
$ Time : int 0 1 5 8 10 11 15 17 18 20 ...
$ NumOfFlights: int 1 6 144 91 504 15 1256 1 1 578 ...
时间列就是 24 小时制。从0一直到2400
我希望得到的是:
hour | number of flight
-------------------------------------
1st | 240
2nd | 223
... | ...
24th | 122
第 1 个小时是从午夜到凌晨 1 点,第二个小时是凌晨 1 点到凌晨 2 点,依此类推直到最后的 24 日,即从晚上 11 点到午夜。而航班数量就是范围内的NumOfFlights的总和。
我试过:
dbGetQuery(conn,"
SELECT
flights.CRSDepTime AS Time,
COUNT(flights.CRSDepTime) AS NumOnTimeFlights
FROM flights
GROUP BY CRSDepTime/60
")
但我意识到不能这样做。我得到的结果将有 40 个时间值。
> head
Time NumOnTimeFlights
1 50 6055
2 105 2383
3 133 674
4 200 446
5 245 266
6 310 34
> tail
Time NumOnTimeFlights
35 2045 48136
36 2120 103229
37 2215 15737
38 2245 36416
39 2300 15322
40 2355 8018
如果您的 CRSDepTime
列是像 HHmm
这样的整数编码时间,那么 CRSDepTime/100
将提取小时。
SELECT
CRSDepTime/100 AS hh,
COUNT(flights.CRSDepTime) AS NumOnTimeFlights
FROM flights
GROUP BY CRSDepTime/100