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

运行结果:

相关推荐

  1. sql sqlserver常用日期函数

    2024-07-15 07:02:01       43 阅读
  2. 数据库SQL查询相关练习

    2024-07-15 07:02:01       50 阅读
  3. sqlserver 函数

    2024-07-15 07:02:01       45 阅读
  4. SqlServer日期格式转换

    2024-07-15 07:02:01       53 阅读
  5. ABAP 常用的日期相关函数

    2024-07-15 07:02:01       32 阅读
  6. PostgreSQL日期和时间相关函数

    2024-07-15 07:02:01       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 07:02:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 07:02:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 07:02:01       58 阅读
  4. Python语言-面向对象

    2024-07-15 07:02:01       69 阅读

热门阅读

  1. Bootstrap 栅格系统的工作原理?

    2024-07-15 07:02:01       24 阅读
  2. Nacos

    Nacos

    2024-07-15 07:02:01      24 阅读
  3. 中介者模式(大话设计模式)C/C++版本

    2024-07-15 07:02:01       27 阅读
  4. 软设之中介者模式

    2024-07-15 07:02:01       22 阅读
  5. Go语言指针及不支持语法汇总

    2024-07-15 07:02:01       22 阅读
  6. linux命令更新-iostat 和 iotop

    2024-07-15 07:02:01       22 阅读
  7. IOSUI自动化之mobiledevice

    2024-07-15 07:02:01       22 阅读
  8. Flask `before_request` 方法解析

    2024-07-15 07:02:01       26 阅读
  9. Hive常用内置函数合集

    2024-07-15 07:02:01       20 阅读