1. 程式人生 > 實用技巧 >mysql concat 唯一鍵 count distinct 去重

mysql concat 唯一鍵 count distinct 去重

本文連結:https://www.cnblogs.com/tujia/p/13717931.html

一、背景

事情是這樣的:需求要求按月的時間維度統計商品的被諮詢情況,但諮詢量需要按天去重的,即一個會員一天內向客服小姐姐放了N次商品連結,商品諮詢量只能算一次

二、未去重的情況

第一次做的時候,是按月的維度,直接統計商品的被諮詢次數

SELECT
    msg_month,
    goods_code,
    COUNT(*) AS send_count
FROM
    im_single_msg_detail
WHERE
    msg_month BETWEEN 202007
AND 202009
GROUP BY msg_month, goods_code ORDER BY msg_month ASC, send_count DESC LIMIT 0, 10

後來產品說不太符合他們的要求,發現有一些使用者一天會給客服傳送10幾20次商品連結,這樣不去重的統計被諮詢次數就沒有什麼意義不了,不方便他們做商品被諮詢排行和諮詢轉化率(轉化為訂單的概率)

三、利用 concat來拼接唯一鍵,再用 count distinct來統計諮詢量

要求:同一天內同一使用者向客服傳送同一個商品的連結,不管傳送幾次都只算一次諮詢量

也就是說:concat(msg_date,member_code,goods_code)一樣的時候,不管出現幾次都只算一次,即:distinctconcat(msg_date,member_code,goods_code)

SELECT
    msg_month,
    goods_code,
    COUNT(
        DISTINCT CONCAT(
            msg_date,
            member_code,
            goods_code
        )
    ) AS send_count
FROM
    im_single_msg_detail
WHERE
    msg_month BETWEEN 202007
AND 202009
GROUP BY
    msg_month,
    goods_code
ORDER BY
    msg_month 
ASC, send_count DESC LIMIT 0, 10

注:一直都不知道還用 distinctconcat這種用法,今天發現這個,還蠻神奇的~

本文連結:https://www.cnblogs.com/tujia/p/13717931.html


完。