時間分類函數 – 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 查詢時,程式碼難免會變得過度冗長
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

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