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

运行结果:

相关内容

热门资讯

微扑克辅助器!德州平台有没有挂... 您好:德州平台有没有挂这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
AApoker透视挂!wepo... 很多人使用云端 AI 时,都担心wepoker透视挂是真的吗、内部资料上传带来隐私风险。这款本地运行...
WePoKer透视!wepok... WePoKer透视!wepoker如何拿到好牌,分享透视多功能软件APP模板;近期一款 AI 黑科技...
红龙扑克透视挂!德扑之星规律,... 红龙扑克透视挂!德扑之星规律,解迷透视挂多功能插件APP法门是一款可以让一直输的玩家,快速成为一个“...
aapoker透视!WePoK... 您好,WePoKer有没有透视软件挂这款游戏可以开挂的,确实是有挂的,需要了解加微【48527505...
红龙扑克开挂!微扑克的辅助工具... 很多人使用云端 AI 时,都担心微扑克的辅助工具有哪些、内部资料上传带来隐私风险。这款本地运行的 A...
aapoker辅助!wepok... 您好:wepoker私人局怎么设置抽水这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会...
aapoker辅助挂!wepo... aapoker辅助挂!wepoker透视挂安全吗,普及辅助挂多功能方法APP策略AI 智能体黑科技再...
红龙PoKer辅助挂!wepo... 您好:wepokerplus透视挂真的假的这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌...
德扑之星辅助挂!德州ai辅助有... 德扑之星辅助挂!德州ai辅助有用吗,详细辅助挂多功能下载APP指南书是一款可以让一直输的玩家,快速成...