我有这个包含大量数据的表。我想根据48小时内和30天内的数据提取不同的结果计数(用于比较)
Fog||Count48hr(fog)||Count30day(fog)||Snow||Count48hr(snow)||Count30day(snow)
LA01 1123 3000 NWC 54 109
SIU 3665 7000 SIS 21 64
CHARTN 444 1500 PHS 39 120
注意:每个计数都是48小时或30天内每个计数的出现次数
答案 0 :(得分:0)
如果您愿意使用两个单独的查询(一个用于雾,一个用于雪),则可以对数据执行条件求和,只有arrival_time
符合所需条件才会增加计数。< / p>
-- Fog
SELECT
fog,
SUM(CASE WHEN NOW() - arrival_time < INTERVAL '48 HOURS' THEN 1 ELSE 0 END)
AS count48hr_fog,
SUM(CASE WHEN NOW() - arrival_time BETWEEN INTERVAL '48 HOURS' AND
INTERVAL '30 DAYS' THEN 1 ELSE 0 END) AS count30day_fog
FROM your_table
GROUP BY fog;
然后你可以再做同样的事情,取代&#34;雾&#34;带有&#34; snow&#34;的列列(也可能重命名输出列)。
这假设在您的计数中您独立地看着雪和雾 - 如果由于某种原因您实际上计算了雪和雾类型的配对(例如,LA01在过去48小时内与NWC一起出现的次数) ,然后你可以合并这个查询:
SELECT
fog,
snow,
SUM(CASE WHEN NOW() - arrival_time < INTERVAL '48 HOURS' THEN 1 ELSE 0 END)
AS count48hr,
SUM(CASE WHEN NOW() - arrival_time BETWEEN INTERVAL '48 HOURS' AND
INTERVAL '30 DAYS' THEN 1 ELSE 0 END) AS count30day
FROM your_table
GROUP BY fog, snow;
但是,您发布的内容暗示这不是您所寻找的内容 - 我已将其包含在内,以防您出现用例。