1693-每天的领导和合伙人

发布时间 2023-07-11 16:37:42作者: OnlyOnYourself-Lzw

每天的领导和合伙人

原文地址:1693. 每天的领导和合伙人 - 力扣(LeetCode)

  • 题目如下所示

个人题解

这题比较简单,主要得看清楚题意,根据date_idmake_name进行分组。个人思考过程如下所示

  • -- 1. 建表
    -- 该表包含日期、产品的名称,以及售给领导和合伙人的编号(名称只包含小写英文字母)
    CREATE TABLE 1693_DailySales(
    	date_id DATE,
    	make_name VARCHAR(20),
    	lead_id INT,
    	partner_id INT
    );
    -- 2. 编写 SQL 语句,使得对于每一个 date_id 和 make_name,返回 不同的 lead_id 以及不同的 partner_id 的数量
      -- 很明显,题目已经给我们说明要我们作分组,且分两列
      -- 我们下面使用 GROUP_CONCAT(expr) 函数分析一下中间的具体分组过程
      SELECT
      	ds.date_id,
      	ds.make_name,
      	GROUP_CONCAT(ds.date_id),
      	GROUP_CONCAT(ds.make_name),
      	GROUP_CONCAT(ds.lead_id),
      	GROUP_CONCAT(ds.partner_id)
      FROM 1693_DailySales ds GROUP BY ds.date_id, ds.make_name;
    
      -- 很显然,分两列的情况下会将 date_id,make_name 完全相同的行合并
      -- 因此题目想要查询 不同的 lead_id 以及不同的 partner_id 的数量 ,那就很简单了
      SELECT
      	ds.date_id,
      	ds.make_name,
      	COUNT(DISTINCT ds.lead_id) unique_leads,
      	COUNT(DISTINCT ds.partner_id) unique_partners
      FROM 1693_DailySales ds GROUP BY ds.date_id, ds.make_name;