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

测试结果

相关推荐
fengfuyao985几秒前
遗传算法与粒子群算法求解非线性函数最大值问题
算法
LeetCode天天刷15 分钟前
【软件认证】比特翻转【滑动窗口】
算法
源代码•宸17 分钟前
Leetcode—1123. 最深叶节点的最近公共祖先【中等】
经验分享·算法·leetcode·职场和发展·golang·dfs
s砚山s20 分钟前
代码随想录刷题——二叉树篇(十三)
数据结构·算法
alphaTao24 分钟前
LeetCode 每日一题 2026/1/5-2026/1/11
算法·leetcode
山上三树25 分钟前
详细介绍 C 语言中的 #define 宏定义
c语言·开发语言·算法
AI科技星41 分钟前
引力与电磁的动力学耦合:变化磁场产生引力场与电场方程的第一性原理推导、验证与统一性意义
服务器·人工智能·科技·线性代数·算法·机器学习·生活
蜕变菜鸟43 分钟前
JS的Object.keys()和sort()排序的用法
数据结构·算法
源代码•宸44 分钟前
Golang基础语法(go语言error、go语言defer、go语言异常捕获、依赖管理、Go Modules命令)
开发语言·数据库·后端·算法·golang·defer·recover
如果你想拥有什么先让自己配得上拥有1 小时前
算数顺序的逻辑和发展?
算法