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

运行结果:

相关内容

热门资讯

最终!德普之星透视免费,微信小... 最终!德普之星透视免费,微信小程序雀神,好像真的是有挂(有挂攻略)1、下载好微信小程序雀神脚本下载之...
黑科技技巧!wepoker免费... 黑科技技巧!wepoker免费脚本,jj斗地主外开挂,都是是真的有挂(讲解有挂)1、每一步都需要思考...
突发!pokemomo辅助软件... 突发!pokemomo辅助软件,winner辅助软件,切实是真的有挂(有挂教程)1、实时winner...
更值得关注的是!wpk真吗,潮... 更值得关注的是!wpk真吗,潮友会鱼虾蟹塞子概率计算方式,原来真的有挂(有挂细节)一、潮友会鱼虾蟹塞...
突发!aapoker怎么选牌,... 突发!aapoker怎么选牌,雀友会广东潮汕辅助脚本,总是真的是有挂(真的有挂)该软件可以轻松地帮助...
截至目前!wpk软件是正规的吗... 截至目前!wpk软件是正规的吗,宝宝浙江游戏免费开挂,一直是真的有挂(有挂解密)宝宝浙江游戏免费开挂...
现有关情况通报如下!哈糖大菠萝... 现有关情况通报如下!哈糖大菠萝万能挂,蜀山四川麻亲友房祈福,果然存在有挂(发现有挂)1、游戏颠覆性的...
黑科技辅助挂!wepoker开... 黑科技辅助挂!wepoker开脚本视频,多乐小程序游戏破解器,确实确实有挂(证实有挂)黑科技辅助挂!...
2026版复盘!wepoker... 2026版复盘!wepoker俱乐部辅助,财神破解版全自动脚本,切实真的有挂(存在有挂)1、下载好财...
突发!we-poker辅助器,... 突发!we-poker辅助器,枫叶辅助器,一贯真的是有挂(揭秘有挂)枫叶辅助器透视方法中分为三种模型...