记录一次产品需求中使用的一条 MySQL

记录一次产品需求中使用的一条SQL

大致需求计算公司目前总沉睡用户并根据沉睡时间进行分组,不是沉睡用户的定义: 有购买消费行为、有注册行为(在微信平台上关注了且通过手机号注册的)。
2星期到1个月:14≤ R <30(从本日开始,假设上次行为时间到本日的时长是 R )
1个月到2个月:30≤ R <60
2个月到3个月:60≤ R <90
3个月到4个月:90≤ R <120
4个月到5个月:120≤ R <150
5个月到6个月:150≤ R <180
6个月以上:180≤ R

得益表定义的相对合理化,就用了一条SQL快速解决了问题。

SELECT
    CASE
    WHEN user_sleep_time <= 1536595176
        AND user_sleep_time > 1535212776 THEN
    'twoWeekdsAgo'
    WHEN user_sleep_time <= 1535212776
        AND user_sleep_time > 1532620776 THEN
    'thirtyDaysAgo'
    WHEN user_sleep_time <= 1532620776
        AND user_sleep_time > 1530028776 THEN
    'sixtyDaysAgo'
    WHEN user_sleep_time <= 1530028776
        AND user_sleep_time > 1527436776 THEN
    'ninetyDaysAgo'
    WHEN user_sleep_time <= 1527436776
        AND user_sleep_time > 1524844776 THEN
    'oneHundredAndTwentyDaysAgo'
    WHEN user_sleep_time <= 1524844776
        AND user_sleep_time > 1522252776 THEN
    'oneHundredAndFiftyDaysAgo'
    WHEN user_sleep_time <= 1522252776 THEN
    'oneHundredAndEightyDaysAgo'
    ELSE 0
    END sleep, COUNT(*) AS userCount
FROM `user_sleep_relation`
WHERE `user_recall_time` < 1536595176
GROUP BY  `sleep`

主要记录下 SQL 中 case when 的用法。

高永立

Ali
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2
Littlesqx

最后还需要 group by 不?

10个月前 评论
Ali

@Littlesqx 不好意思,之前的SQL 写错了。现在才是正确的。

10个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!