写篇博文记录下吧。 在下之前的开发工作,要直接写复杂SQL的机会不多。 这次做视频点播日志的分析,尝试了下,还蛮有趣的——尤其是当运行成功的时候!
业务需求
查询活跃用户的数量。 活跃用户的定义是每月点播次数超过20的用户。 点播表的数据是这样的:用户点播一次数据,就记录一条。大致的内容有:用户的名称 mac 点播的时间 timePoint
SQL
其实,我觉得每次要写SQL前,要明确的一件事是,到底要查询什么。 可以先用中文描述一遍,然后翻译成SQL。
这样的话,我描述下我这条SQL所要做的事情吧。
查询点播时间在2017-03-01 00:00:00到2017-04-01 00:00:00之间的所有mac的点播次数,然后在其中筛选出点播次数在20次以上的用户,并统计这些用户的总数。
其实,有经验的小伙伴们,大多知道用子查询。
子查询的话,用的较多的有WHERE和FROM子查询。
WHERE子查询的话,是将查询的结果用于外层WHERE。 FROM子查询的话,是将查询的结果用于外层再查询一次。
SO......SQL人工翻译中......
SELECT count(t_count.mac_count)
FROM (
SELECT count(mac) AS mac_count
FROM historymovice
WHERE timePoint >= '2017-03-01 00:00:00' AND timePoint <= '2017-04-01 00:00:00'
GROUP BY mac
) AS t_count
WHERE t_count.mac_count >= 20;
无情岁月增中减,有味诗书苦后甜。
本文作者分享了在视频点播日志分析中如何使用SQL查询来统计每月播放次数超过20次的活跃用户数量,通过实例展示了从需求理解到编写WHERE和FROM子查询的过程,让读者体验到技术的乐趣。
1万+

被折叠的 条评论
为什么被折叠?



