SQl server 日期函数查询相关练习

练习1.按月份分析销售数据。

create database date_db;
use date_db;
CREATE TABLE SalesData (
    SaleID INT PRIMARY KEY IDENTITY(1,1),
    ProductName NVARCHAR(100) NOT NULL,
    SaleAmount DECIMAL(10, 2) NOT NULL,
    SaleDate DATE NOT NULL
);
INSERT INTO SalesData(ProductName, SaleAmount, SaleDate)
VALUES ('Product A', 150.00, '2024-01-15'), 
       ('Product B', 200.00, '2024-02-05'), 
       ('Product C', 120.50, '2024-03-01'),
       ('Product A', 250.00, '2024-03-20'),
       ('Product D', 180.75, '2024-04-10'),
       ('Product B', 300.00, '2024-04-15'),
       ('Product C', 220.00, '2024-05-01');
期望得到的结果:
月份   总销售额
1      150
2      200
3      370.5
4      480.75
5      220

查询语句:

select datepart(Month,SaleDate) as 月份,
sum(SaleAmount) 
from SalesData group by datepart(Month,SaleDate);

练习2.按星期分析销售数据。

期望得到的结果:
星期     总销售额
星期二   650
星期四   650.75
星期六   120.5

查询语句:

select case datepart(weekday,SaleDate) 
when '1'then'星期一'
when'2'then '星期二'
when'3'then '星期三'
when'4'then '星期四'
when'5'then '星期五'
when'6'then '星期六'
when'7'then '星期七'
end
 as 星期,
sum(SaleAmount) 
from SalesData group by datepart(weekday,SaleDate);

运行结果:



练习3:按月份分析销售数据,并携带季度信息。


CREATE TABLE SalesRecords (
    SaleID INT PRIMARY KEY IDENTITY(1,1),
    ProductName NVARCHAR(50) NOT NULL,
    SaleAmount DECIMAL(10,2) NOT NULL,
    SaleDate DATE NOT NULL
);

INSERT INTO SalesRecords(ProductName, SaleAmount, SaleDate)
VALUES ('Laptop', 1500.00, '2022-01-15'),
       ('Smartphone', 800.00, '2022-02-20'),
       ('Headphones', 50.00, '2022-03-05'),
       ('Tablet', 200.00, '2022-04-10'),
       ('Printer', 120.00, '2022-05-15'),
       ('Monitor', 300.00, '2022-06-20'),
       ('Keyboard', 30.00, '2022-07-05'),
       ('Mouse', 20.00, '2022-08-10');

期望得到的结果如下:
月份   季度       总销售额
1      第一节度   1500
2      第一节度   800
......
7      第三季度   30

查询语句:

select 月份,case
when 月份 between 1 and 3 then '第一季度'
when 月份 between 4 and 6 then  '第二季度'
when 月份 between 7 and 9 then  '第三季度'
when 月份 between 10 and 12 then  '第四季度'
end as 季度,总销售额 from
(select month(saledate) 月份,cast(sum(saleamount) as int) as总销售额 
from SalesRecords group by month(saledate))tb1111;

运行结果:


练习4:格式化订单日期(按要求格式转换)和总价(保留两位小数)
 

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY IDENTITY(1,1),
    CustomerName NVARCHAR(100) NOT NULL,
    OrderDate DATETIME NOT NULL,
    TotalAmount FLOAT NOT NULL
);
INSERT INTO Orders(CustomerName, OrderDate, TotalAmount)
VALUES ('Alice Johnson', '2024-04-01 15:30:00', 250.992),
       ('Bob Smith', '2024-04-05 10:15:00', 185.521),
       ('Carolyn White', '2024-04-10 08:45:00', 300.752);

期望得到的结果:
OrderID     CustomerName   OrderDate   TotalAmount
1           Alice Johnson  2024/04/01  250.99
2           Bob Smith      2024/04/05  185.52
......
*/

查询语句:

select OrderID,
CustomerName,
format(OrderDate,'yyyy/MM/dd')as OrderDate ,
round(TotalAmount,2) as TotalAmount 
from Orders;

运行结果:


练习5:员工生日提醒,查询出本月过生日的员工,并显示出此员工距离过生日还有几天。


CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY IDENTITY(1,1),
    Name NVARCHAR(100) NOT NULL,
    DOB DATE NOT NULL
);
INSERT INTO Employees (Name, DOB)
VALUES ('Alice Johnson', '1990-05-15'),
       ('Bob Smith', '1985-06-20'),
       ('Carolyn White', '1992-05-01'),

     ('David rose', '1988-07-10'),
       ('David Brown', '1988-04-10');
期望得到的结果:
EmployeeID     Name           DOB                     生日提醒
    2               David rose    1988-07-10      David rose距离过生日还有3天

提示:concat()函数,可用于拼接数据。比如:
select concat('a','b'); 拼接后返回:ab
select concat(name,age) from tb1; 将tb1表的name列和age列数据拼接到一起。

查询语句:

select *,
concat(name,'距离过生日还有',datediff(day,day(DOB),day(getdate())),'天') 
as  生日提醒 
from Employees where  month(DOB)=month(getdate());

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/798795.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mybatis语法进阶1

日志的使用 我们在使用MyBatis的时候, 其实MyBatis框架会打印一些必要的日志信息, 在开发阶段这些日志信息对我们分析问题,理解代码的执行是特别有帮助的; 包括项目上线之后,我们也可以收集项目的错误日志到文件里面去; 所以我们采用专门的日志系统来处理. 步骤 导入坐标拷贝…

算法类学习笔记 ———— 图像金字塔

文章目录 介绍分类高斯金字塔(向下采样)构建步骤差分高斯金字塔 拉普拉斯金字塔 介绍 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉…

如何在Mac上恢复已删除的存档文件?

在本文中,我们将分享在 macOS 或 OS X 上运行的 MacBook、iMac 或 Mac mini 上恢复已删除存档文件的不同方法。 下载免费试用的 Mac 数据恢复软件以在 Mac 上恢复已删除的存档文件。 macOS 可以选择压缩您的文件。您只需选择文件,按住 Control 键单击&a…

【排序 - 插入排序 和 希尔排序】

插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是逐步构建有序序列。在排序过程中,它将未排序的元素逐个插入到已排序的部分中,从而在每次插入时扩展已排序序列的长度。 原理介绍 插入排序的基本思…

【流媒体】 通过ffmpeg硬解码拉流RTSP并播放

简介 目前RTSP拉流是网络摄像头获取图片数据常用的方法,但通过CPU软解码的方式不仅延时高且十分占用资源,本文提供了一种从网络摄像头RTSP硬解码的拉流的方法,并且提供python代码以便从网络摄像头获取图片进行后续算法处理。 下载ffmpeg F…

ArcGIS识别不GDB文件地理数据库显示为空?

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 我们经常会碰到拷贝的GDB文件ArcGIS无法识别,软件只是把他当做普通的文件夹去看待&am…

主机安全-进程、命令攻击与检测

目录 概述反弹shell原理nc/dev/xxx反弹shell下载不落地反弹Shell各种语言反弹shell linux提权sudosuid提权mysql提权 Dnslog参考 概述 本文更新通过在主机(不含容器)上直接执行命令或启动进程来攻击的场景。检测方面以字节跳动的开源HIDS elkeid举例。每…

滑块拼图验证码识别

通常滑块验证码都是横向滑动,今天看到一个比较特别的滑块拼图验证码,他不仅能在横向上滑动,还需要进行纵向滑动。如下图所示: 他的滑块在背景图片的左上角,需要鼠标拖动左上角的滑块,移动到背景图的缺口位置…

Apache Doris:下一代实时数据仓库

Apache Doris:下一代实时数据仓库 概念架构设计快速的原因——其性能的架构设计、特性和机制基于成本的优化器面向列的数据库的快速点查询数据摄取数据更新服务可用性和数据可靠性跨集群复制多租户管理便于使用半结构化数据分析据仓一体分层存储 词条诞生技术概述适…

探索性数据分析:使用Python与Pandas库实现数据洞察

探索性数据分析:使用Python与Pandas库实现数据洞察 引言 在当今数据驱动的时代,数据分析已成为决策制定、策略规划和业务优化的关键环节。无论是商业智能、金融分析还是市场研究,数据分析都扮演着至关重要的角色。Pandas库作为Python生态系统…

html02-标签继续学习

1.列表标签 1.1 列表标签的使用场景 场景&#xff1a;在网页中按照 行 展示关联性的内容&#xff0c;如&#xff1a;新闻列表、排行榜、账单等 特点&#xff1a;按照行的方式&#xff0c;整齐显示内容 种类&#xff1a;无序列表、有序列表、自定义列表 1.2无序列表 <!--…

0.单片机工作原理

文章目录 最小系统 单片机芯片 时钟电路 复位电路 电源 最小系统 单片机芯片 本次51单片机的芯片为&#xff1a;STC89C52 Flash(闪存)程序存储器&#xff1a;存储程序的空间 SRAM&#xff1a;数据存储器&#xff0c;可用于存放程序执行的中间结果和过程数据 DPTR&#xff1a;…

中间件——Kafka

两个系统各自都有各自要去做的事&#xff0c;所以只能将消息放到一个中间平台&#xff08;中间件&#xff09; Kafka 分布式流媒体平台 程序发消息&#xff0c;程序接收消息 Producer&#xff1a;Producer即生产者&#xff0c;消息的产生者&#xff0c;是消息的入口。 Brok…

IDEA实现热部署

什么是热部署&#xff1f; 热部署&#xff08;Hot Deployment&#xff09;是指在应用程序运行过程中&#xff0c;无需停止整个应用程序或重新启动服务器&#xff0c;就能够部署新的代码、资源或配置文件&#xff0c;使其立即生效。这种部署方式有助于提高开发效率和系统的可用性…

【数据结构】顺序表的应用

目录 一.引言 二.顺序表概念 三.顺序表的实现 1.定义顺序表 2.顺序表初始化 ​编辑 3.检查空间&#xff0c;如果满了&#xff0c;进行增容 4.顺序表尾插 5.顺序表尾删 6.顺序表头插 7.顺序表头删 ​编辑 8.顺序表查找 9.顺序表在pos位置插入x 10.顺序表删…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十四)-无人机操控关键绩效指标(KPI)框架

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

sqllabs(第42-53)

第42关 万能密钥登录成功 密码&#xff1a; or 11 -- aaa 修改密码中尝试报错注入 # 获取数据库名 and updatexml(1,concat(0x7e,(select database()),0x7e),1) -- aaa # 获取数据表名 and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_sche…

Unity ColorSpace 之 【颜色空间】相关说明,以及【Linear】颜色校正 【Gamma】的简单整理

Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 目录 Unity ColorSpace 之 【颜色空间】相关说明&#xff0c;以及【Linear】颜色校正 【Gamma】的简单整理 一、简单介绍 二、在Unity中设置颜色空间 三、Unity中的Gamma…

【STM32开发笔记】搭建VSCode+PyOCD的STM32开发环境

【STM32开发笔记】搭建VSCodePyOCD的STM32开发环境 一、安装软件1.1 安装STM32CubeMX1.2 安装VSCode1.3 安装Arm GNU Toolchain1.4 安装Make for Windows1.5 安装Python1.6 安装PyOCD 二、安装插件2.1 VSCode插件2.2 PyOCD支持包 三、创建项目3.1 创建STM32CubeMX项目3.2 查阅原…

基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现

注&#xff1a;每个学校每个老师对论文的格式要求不一样&#xff0c;故本论文只供参考&#xff0c;本论文页数达到60页以上&#xff0c;字数在6000及以上。 基于SpringBootVueJS微信小程序技术的图书森林共享小程序设计与实现 目录 基于SpringBootVueJS微信小程序技术的图书森…