当前位置: 首页 > news >正文

SQL:生成日期序列(填补缺失的日期)

你是一家零售公司的数据分析师,公司有一个 daily_sales表记录了每日的销售数据。由于某些日期可能没有销售记录,你需要生成完整的日期序列并分析销售情况

CREATE TABLE daily_sales (date DATE PRIMARY KEY,sales_amount DECIMAL(10,2) NOT NULL
);

题目要求

  1. 编写一个SQL查询,生成2023年全年的完整日期序列(从2023-01-01到2023-12-31)
  2. 将 daily_sales表与生成的日期序列左连接,确保结果包含所有日期
  3. 对于没有销售记录的日期,销售金额显示为0
  4. 计算并显示每个日期是星期几(1-7,1=周日,7=周六)
  5. 标记每个日期是工作日(Weekday)还是周末(Weekend)
  6. 按日期排序结果
WITH RECURSIVE date_range AS (SELECT '2023-01-01' AS dateUNION ALLSELECT date + INTERVAL 1 DAYFROM date_rangeWHERE date < '2023-12-31'
)
SELECT d.date,COALESCE(s.sales_amount, 0) AS sales_amount,DAYOFWEEK(d.date) AS day_of_week,CASE WHEN DAYOFWEEK(d.date) IN (1, 7) THEN 'Weekend' ELSE 'Weekday' END AS day_type
FROM date_range d
LEFT JOIN daily_sales s ON d.date = s.date
ORDER BY d.date;
  1. 使用 WITH RECURSIVE 创建递归CTE
  2. MySQL 的 DAYOFWEEK() 函数返回1(周日)到7(周六)
  3. 日期加法使用 + INTERVAL 1 DAY 语法
http://www.dtcms.com/a/333738.html

相关文章:

  • 磁悬浮轴承“幽灵振动”克星:深度解析同频振动机理与精准打击策略
  • 优先级反转问题
  • [Python 基础课程]根据描述定义一个 Person 类
  • 关注与优化:用于骨龄评估的交互式关键点定位与颈椎定量分析|文献速递-深度学习人工智能医疗图像
  • Go语言中的指针接收者
  • 语音活动检测VAD技术简介
  • 崩溃大陆2 送修改器 PC/手机双端(Crashlands2)免安装中文版
  • Fanuc机器人EtherCAT通讯配置详解
  • 思科应用中心基础设施(ACI)设计指南
  • Redis面试精讲 Day 22:Redis布隆过滤器应用场景
  • 第2篇_Go语言基础语法_变量常量与数据类型
  • Java-JVM是什么JVM的类加载机制
  • 设备 AI 知识库,管理效率新飞跃
  • 安装openmmlab时出错
  • 码上爬第七题【协程+对抗格式化检测+数组移位】
  • Linux搭建ftp服务器
  • 事务的四大特性
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘fairseq’问题
  • ubuntu安装docker
  • Python爬取推特(X)的各种数据
  • Higress AI网关
  • 新手入门 Makefile:FPGA 项目实战教程(三)
  • Android - 动态切换桌面图标
  • Rubber Band Optimation算法python实现
  • linux-----------------锁
  • [Chat-LangChain] 会话图(LangGraph) | 大语言模型(LLM)
  • 第二十四天:虚函数与纯虚函数
  • 速卖通平台关键字搜索商品列表列表接口实现指南:从接口分析到代码落地
  • Linux之高可用集群实战(二)
  • Tokenizer(切词器)的不同实现算法