5、SQL常见函数+聚集函数
阅读书籍《SQL必知必会(第4版)》笔记
1、常见函数
当前 SQL 函数的问题:在各个 DBMS 上差异大,若使用一定要写好注释,且这段代码不可移植
大部分 SQL 支持实现的函数:
- 1、文本函数:用于处理文本字符串
# RTRIM() - 去掉右边空格
# LTRIM() - 去掉左边空格
# TRIM() - 去掉左右两边空格
SELECT CONCAT(RTRIM(vend_name),'(', RTRIM(vend_country), ')')
# UPPER - 大写
SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;
# SOUNDEX - 将文本转换成语音表示的字母,有点模糊匹配的意思
SELECT cust_name, cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('Alice Aqiu')
- 2、数值函数:用于处理数值数据算术操作
- 3、时间函数:用于处理日期、时间
SELECT order_num, order_date
FROM Orders
WHERE YEAR(order_date)=2025 # 返回年份
2、聚集函数
使用场景:需要 汇总数据,而不需要实际数据本身
- SUM/MAX/AVG/MIN 忽略值为 null 的行
- COUNT:COUNT(*) 表示null计数;COUNT(column)表示忽略null值
# COUNT - 确定表中某列的行数(或者某种条件下的行数)
SELECT COUNT(*) AS num_cust
-- 或者 SELECT COUNT(cust_email) AS num_cust
FROM Customers
# SUM - 获取表中某列的和
SELECT SUM(quantity) AS item_order
-- 或者 SELECT SUM(quantity*item_price)AS item_order
FROM OrderItems
WhERE order_num = 2025;
# MAX/AVG/MIN - 找出某列的最大值/最小值/平均值
SELECT MAX(prod_price) AS max_price
FROM Products
--
SELECT AVG(prod_price) AS avg_price
FROM Products
WHERE vend_id='DLL01';
- 聚集不同的值:DISTINCT
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';
- 组合聚集函数
SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS price_avg
FROM Products