SQL SERVER教學第五天筆記

時間分類函數 – DATEPART

定義 – select DATEPART(YEAR, ‘2022-06-12’) – 我想要把 ‘2022-06-12’中,year的部分抓出來

題目:假設我們想知道周一到周日,哪一天的銷售量以及額度是最大的,我們要如何根據時間進行分類?

解答:

select DATEPART(WEEKDAY, [Date]) as 星期,
sum([amount]) as 銷售額
FROM [FruitSalesData].[dbo].[SalesComplete]
group by datepart(WEEKDAY, [Date])
order by 銷售額 DESC

SQL SERVER教學第五天筆記 1
SQL SERVER教學第五天筆記

定義變數

很多時候我們在寫 SQL 查詢時,程式碼難免會變得過度冗長

DECLARE @變數名稱 as 資料型別 = 值;

設定INT、REAL值

DECLARE @Anint as int = 123;
SELECT @Anint;

DECLARE @A_real as real;
SET @A_REAL = 888.88;
select @A_real;

練習1 – 使用定義變數,找出”最高銷售額”

— 宣告變數
DECLARE @MaxAmount as real;
set @MaxAmount = (
select top(1) amount
FROM [FruitSalesData].[dbo].[SalesComplete]
order by amount DESC
);
–呼叫變數
select @MaxAmount

練習2 – 計算出個別水果佔公司總營收的比例

練習步驟
1、定義一個變數 @total
2、計算出 SalesComplete 表格内 Amount 的加總
3、將計算的結果指派給 @total
4、利用 @total 以及 GROUP BY 計算出個別水果佔公司總營收的比例

DECLARE @total as real;
set @total = (
select sum(amount)
FROM [FruitSalesData].[dbo].[SalesComplete]
);
select sum(amount) as 銷售額,
round(( sum(amount) / @total ), 2) as 比例,
product
FROM [FruitSalesData].[dbo].[SalesComplete]
group by product

SQL SERVER教學第五天筆記 3
SQL SERVER教學第五天筆記

UDF(User Defined Function)

使用者自行定義的 SQL 函數

CREATE FUNCTION GetTaxAmount(
@參數 類別
)
RETURNS 輸出類別 AS
BEGIN
RETURN 結果
END;

練習:設計一個計算營業稅的函數

先設定函數
create function GetTax(
@amount as int
) returns real as
begin
declare @return_value real;
set @return_value = @amount * 0.05;
RETURN @return_value
end;
—–
再呼叫函數
select dbo.GetTax(30000000);