記錄一次產品需求中使用的一條 MySQL

Ali發表於2018-09-24

記錄一次產品需求中使用的一條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 的用法。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

高永立

相關文章