LeetCode MySQL-1693. Daily Leads and Partners

    LeetCode MySQL

    Write an SQL query that will, for each date_id and make_name, return the number of distinct lead_id’s and distinct partner_id’s.
    Return the result table in any order.

    寫一個 SQL Query來返回每一個 date_id 和 make_name,且不重複 lead_id 和 partner_id 的數量。
    可任意排序結果。
    

    Table: DailySales

    +-------------+---------+
    | Column Name | Type    |
    +-------------+---------+
    | date_id     | date    |
    | make_name   | varchar |
    | lead_id     | int     |
    | partner_id  | int     |
    +-------------+---------+
    This table does not have a primary key.
    This table contains the date and the name of the product sold and the IDs of the lead and partner it was sold to.
    The name consists of only lowercase English letters.
    

    Example 1:

    Input: 
    DailySales table:
    +-----------+-----------+---------+------------+
    | date_id   | make_name | lead_id | partner_id |
    +-----------+-----------+---------+------------+
    | 2020-12-8 | toyota    | 0       | 1          |
    | 2020-12-8 | toyota    | 1       | 0          |
    | 2020-12-8 | toyota    | 1       | 2          |
    | 2020-12-7 | toyota    | 0       | 2          |
    | 2020-12-7 | toyota    | 0       | 1          |
    | 2020-12-8 | honda     | 1       | 2          |
    | 2020-12-8 | honda     | 2       | 1          |
    | 2020-12-7 | honda     | 0       | 1          |
    | 2020-12-7 | honda     | 1       | 2          |
    | 2020-12-7 | honda     | 2       | 1          |
    +-----------+-----------+---------+------------+
    Output: 
    +-----------+-----------+--------------+-----------------+
    | date_id   | make_name | unique_leads | unique_partners |
    +-----------+-----------+--------------+-----------------+
    | 2020-12-8 | toyota    | 2            | 3               |
    | 2020-12-7 | toyota    | 1            | 2               |
    | 2020-12-8 | honda     | 2            | 2               |
    | 2020-12-7 | honda     | 3            | 2               |
    +-----------+-----------+--------------+-----------------+
    Explanation: 
    For 2020-12-8, toyota gets leads = [0, 1] and partners = [0, 1, 2] while honda gets leads = [1, 2] and partners = [1, 2].
    For 2020-12-7, toyota gets leads = [0] and partners = [1, 2] while honda gets leads = [0, 1, 2] and partners = [1, 2].
    

    Solution:
    1. 選擇標題 date_id, make_name。
    2. 選擇標題 lead_id 的數字不重複的有幾個為 unique_leads。
    3. 選擇標題 partner_id 的數字不重複的有幾個為 unique_partners。
    4. 以 date_id 與 make_name 兩列為組合群組。
    5. 以 make_name 為第一排序,接著以 date_id 為第二排序。

    Code1:

    SELECT 
        date_id,
        make_name,
        COUNT(DISTINCT lead_id) AS unique_leads,
        COUNT(DISTINCT partner_id) AS unique_partners
    FROM DailySales
    GROUP BY date_id, make_name
    ORDER BY make_name DESC, date_id DESC;
    

    newDailySales