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

测试结果

相关推荐
致Great14 小时前
Pi 的上下文压缩,到底是怎么工作的?
算法
watersink15 小时前
机器学习聚类算法
算法·机器学习·聚类
luj_176816 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
抓蛙师16 小时前
多租户 tenant_id SQL 注入漏洞分析与应急响应报告
数据库·sql
饼饼学习空间智能17 小时前
家庭服务机器人训练数据怎么积累?仿真、真实采集与持续学习的技术路线分析
人工智能·算法·机器学习
蛋先生DX19 小时前
你瘦不下来但大模型可以:量化原理了解一下
深度学习·算法·llm
何以解忧,唯有..19 小时前
数据库索引失效的常见情况与优化策略
数据库·sql·oracle
牛阿大20 小时前
LQR算法
算法
(╹◡╹)20 小时前
18.剪枝
算法·机器学习·剪枝