MySQL SQL函數應用筆記

1、模糊查詢

SELECT *
FROM table
WHERE 字段 LIKE "%"

2、left join 左連接

SELECT 備註 AS 供應商,z.商品編號,z.商品名稱,s.類別,z.供應商款號,庫存數量,銷售數量,季節,成本價
FROM 8510zhixiao z LEFT JOIN shopziliao s ON z.商品編號=s.商品編號

3、date()提取日期,case when 條件選擇 then 返回數據 end 結束(新生成字段名), GROUP BY 條件 分組查詢,可以多個值,

SELECT DATE(單據日期) AS 銷售日期,s.備註 AS 供應商名稱,xs.商品編號,xs.商品名稱,s.類別,s.季節,SUM(xs.數量) AS 周銷售數量,SUM(xs.金額) AS 周銷售金額,xs.參考進價 AS 成本價,k.數量 AS 現有庫存,
CASE 
WHEN 客戶名稱='零售顧客' THEN '零售顧客'
ELSE '非零售顧客'
END 客戶類別
FROM 8510xiaoshou xs LEFT JOIN (SELECT * FROM kucun WHERE 倉庫名稱 LIKE "%8510" ) k ON xs.商品編號=k.商品編號 LEFT JOIN shopziliao s ON xs.商品編號=s.商品編號
WHERE xs.數量>=0
GROUP BY xs.商品編號

4、now()當前系統時間,DATEDIFF(time,time)兩個日期相減返回int,is null 空值 is not null 非空,

SELECT DATE(單據日期) AS 訂貨日期,DATE(NOW()) AS 查詢日期,DATEDIFF(DATE(NOW()),DATE(單據日期)) AS 差值(天),商品編號,商品名稱,數量 AS 訂貨數量,入庫數量,CASE 
WHEN 入庫數量 IS NULL THEN 數量
WHEN 入庫數量<數量 THEN (數量-入庫數量)
ELSE 0 END 欠貨數量
FROM buhuo
WHERE 數量!=入庫數量 OR 入庫數量 IS NULL

5、UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的列的順序必須相同。

SELECT k.倉庫名稱,備註 AS 供應商名稱,k.商品編號,s.類別,k.數量
FROM kucun k LEFT JOIN shopziliao s ON k.商品編號=s.商品編號
WHERE s.類別='風衣' OR ((備註 LIKE '%~%' OR 備註 LIKE '%~%') AND (s.類別='褲子'))
UNION
SELECT k.倉庫名稱,備註 AS 供應商名稱,k.商品編號,s.類別,k.數量
FROM kucun k LEFT JOIN shopziliao8515 s ON k.商品編號=s.商品編號
WHERE s.類別='風衣' OR ((備註 LIKE '%~%' OR 備註 LIKE '%~%') AND (s.類別='褲子'))

6、DISTINCT 去重,GROUP_CONCAT()合併分組後的列查詢數據自動逗號分隔,嵌套子查詢

SELECT s.客戶名稱,s.客戶編號,第一次購買時間,最後一次購買時間,總購買數量,客單價,距離最後一次購買時間,購買過的商品類別,購買過的供應商
FROM 
(SELECT 客戶名稱,客戶編號,MIN(DATE(單據日期)) AS 第一次購買時間,MAX(DATE(單據日期)) AS 最後一次購買時間,SUM(數量) AS 總購買數量,SUM(訂貨金額)/SUM(數量) AS 客單價,DATEDIFF(DATE(NOW()),MAX(DATE(單據日期))) AS \
距離最後一次購買時間
FROM 8515huaxiang
GROUP BY 客戶名稱) s JOIN 
(SELECT h.客戶編號,客戶名稱,GROUP_CONCAT(DISTINCT(s.類別)) AS 購買過的商品類別,GROUP_CONCAT(DISTINCT(h.供應商名稱)) AS 購買過的供應商
FROM 8515huaxiang h LEFT JOIN shopziliao8515 s ON h.商品編號=s.商品編號 
WHERE 客戶名稱 != '零售顧客'
GROUP BY h.客戶編號) t ON s.客戶編號=t.客戶編號

7、\ 下一行代碼和上一行代碼連接,round(字段,2)保留兩位小數,order by 排序默認升序,

SELECT 客戶名稱,客戶編號,類別,h.供應商名稱,MIN(DATE(單據日期)) AS 第一次購買時間,MAX(DATE(單據日期)) AS 最後一次購買時間,\
DATEDIFF(NOW(),MAX(DATE(單據日期))) AS 距最後一次購買時間,ROUND(SUM(訂貨金額)/SUM(數量),2) AS 客單價,SUM(數量) AS 總購買數量
FROM 8515huaxiang h LEFT JOIN shopziliao8515 s ON h.商品編號=s.商品編號
WHERE 客戶名稱 != '零售顧客' AND 客戶名稱=客戶名稱 AND 類別=類別
GROUP BY 客戶名稱,類別
ORDER BY 客戶編號

持續更新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章