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 客户编号

持续更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值