1693-每天的领导和合伙人
每天的领导和合伙人
- 题目如下所示
个人题解
这题比较简单,主要得看清楚题意,根据date_id
和make_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;