【发布时间】:2021-02-07 16:54:32
【问题描述】:
我是 Hivesql 的新手。 我有一个包含 600 万条记录的原始表,如下所示:
我想统计每周对每个 Modem_id 的 IP_address 访问次数。 我想要的结果表会是这样的:
我用左连接完成了它,它有效。但是由于使用 join 会很耗时,所以我想用 case when 语句来做——但我不能写出正确的语句。你有什么想法吗?
这是我使用的连接语句:
select a.modem_id,
a.Number_of_IP_in_Day_1,
b.Number_of_IP_in_Day_2
from
(select modem_id,
count(distinct ip_address) as Number_of_IP_in_Day_1
from F_ACS_DEVICE_INFORMATION_NEW
where day=1
group by modem_id) a
left join
(select modem_id,
count(distinct param_value) as Number_of_IP_in_Day_2
from F_ACS_DEVICE_INFORMATION_NEW
where day=2
group by modem_id) b
on a.modem_id= b.modem_id;
【问题讨论】:
-
您的输出将天数作为列标题。这是动态的吗,例如,10 天后您想要 10 列,一年后您想要 365 列?
-
其实,我想统计每周的IP数。所以它只有 4 列 4 周
-
你有证据表明加入很耗时吗?
-
您需要这种格式吗?调制解调器 ID、日期、IP 计数是否有效?
标签: sql hive count case grouping