SQl server 日期函数查询相关练习
创始人
2025-01-07 01:32:57
0

练习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());

运行结果:

相关内容

热门资讯

一分钟教你“天天贵阳app修改... 一分钟教你“天天贵阳app修改器”附开挂脚本辅助详细教程;无需打开直接搜索薇:136704302 咨...
透视辅助“微信开心泉州辅助器”... 透视辅助“微信开心泉州辅助器”开挂(透视)辅助工具必备教程-知乎 >>您好:软件加薇13670430...
重大科普"丽水都莱辅... 大家好,今天小编来为大家解答丽水都莱辅助这个问题咨询软件客服可以免费测试直接加微信(13670430...
教程辅助“闽游app辅助器”开... 您好:这款闽游app辅助器游戏是可以开挂的,确实是有挂的,很多玩家在这款闽游app辅助器游戏中打牌都...
大家学习交流“天天福建十三张辅... 大家学习交流“天天福建十三张辅助器”附开挂下载辅助详细教程;打开点击测试直接进入微信(1367043...
九分钟辅助“凑一桌游戏辅助器怎... 九分钟辅助“凑一桌游戏辅助器怎么安装”开挂(透视)辅助安装wpk教程-知乎【无需打开直接搜索加薇13...
盘点一款"拱趴大菠萝... 大家好,今天小编来为大家解答拱趴大菠萝卦这个问题咨询软件客服可以免费测试直接加微信(13670430...
教程辅助“微信小程序蜀山四川辅... 教程辅助“微信小程序蜀山四川辅助器”开挂(透视)辅助神器-知乎 >>您好:软件加薇136704302...
最新技巧“心悦游戏辅助”附开挂... 最新技巧“心悦游戏辅助”附开挂脚本辅助详细教程1、下载安装好心悦游戏辅助,进入游戏主界面,点击下方的...
两分钟辅助“余干中至小程序辅助... 两分钟辅助“余干中至小程序辅助器免费”开挂(透视)辅助挂黑科技教程-知乎;打开点击测试直接进入微信(...