SQL-每日一题【1484. 按日期分组销售产品】

题目

Activities

编写解决方案找出每个日期、销售的不同产品的数量及其名称。

每个日期的销售产品名称应按词典序排列。

返回按 sell_date 排序的结果表。

结果表结果格式如下例所示。

示例 1:

解题思路

前置知识

group_concat函数的功能

将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回列:

group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] )

group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])

说明:

(1)使用distinct可以排除重复值;

(2)如果需要对结果中的值进行排序,可以使用order by子句;

(3)separator是一个字符串值,默认为逗号。

下面举例说明:select id,price from goods;

以id分组,把price字段的值在同一行打印出来,逗号分隔(默认):select id, group_concat(price) from goods group by id;

以id分组,把price字段的值在一行打印出来,分号分隔:select id,group_concat(price separator ';') from goods group by id;

1.题目要求我们 找出每个日期、销售的不同产品的数量及其名称,这道题前两个字段(num_sold,num_sold)比较好解决,我们只需要将表中的数据按照sell_date进行分组,然后进行去重统计出组中的记录数即可。

2.products字段就要用到我们上面所说的 group_concat() 函数,我们也是需要分组然后去重,最后用','隔开就可以了。

代码实现

sql 复制代码
select
    sell_date,
    count(distinct product) as num_sold,
    group_concat(distinct product order by product separator ',' ) as products
    from Activities
    group by sell_date
    order by sell_date

测试结果

相关推荐
danaaaa27 分钟前
算法力扣刷题 三十六【二叉树迭代遍历】
数据结构·c++·算法·leetcode·职场和发展
王安安的记录27 分钟前
DFS回溯剪枝|KMP通过数组记录减少判断子字符串|思路
算法·深度优先·剪枝
浩哲Zhe31 分钟前
SQL基础
数据库·sql
mana飞侠1 小时前
代码随想录算法训练营第67天:图论5[1]
算法·深度优先·图论
Mount〆1 小时前
王道考研数据机构:中缀表达式转为后缀表达式
数据结构·算法
阿拉-M831 小时前
代码随想录Day72(图论Part08)
算法·图论
阿拉-M831 小时前
代码随想录Day71(图论Part07)
算法·图论
兔老大RabbitMQ2 小时前
mysql之比较两个表的数据
数据库·mysql·算法·oracle·哈希算法
TangAcrab3 小时前
sql 清空表,并清空自增 id
数据库·sql·清空数据库表·清空自增id
续亮~4 小时前
6、Redis系统-数据结构-05-整数
java·前端·数据结构·redis·算法