聚合函式及分組與過濾(GROUP BY … HAVING)
MySQL參考手冊官網:
https://dev.mysql.com/doc/refman/5.7/en/sql-function-reference.html
常用函式
-
數學運算
--數學運算 SELECT ABS(-2) -- 絕對值 SELECT CEILING(5.2) -- 向上取整數 SELECT FLOOR(5.2) -- 向下取整數 SELECT RAND() -- 返回一個 0~1之間的隨機數 -- 字串函式 SELECT CHAR_LENGTH('MySQL') -- 字串長度 SELECT CONCAT('My','S','QL') -- 拼接字串 SELECT INSERT('MySQL',1,3,'WWW') -- 查詢,從一個位置開始替換某個長度(1,3表示從第一個字元開始,替換3個字元) SELECT INSTR('MySQL','S') -- 返回第一次出現的字串的索引 SELECT LOWER('MySQL') -- 全轉為小寫字母 SELECT UPPER('MySQL') -- 全轉為大寫字母 SELECT REPLACE('MySQL','My','www') -- 替換出現的指定字串 SELECT SUBSTR('MySQL',2,3) -- 返回指定的字串 代表從一個位置開始,擷取的長度(2,3代表從第2個字元開始,擷取3個字元) SELECT REVERSE('MySQL') -- 反轉 -- 時間和日期函式 SELECT CURRENT_DATE() -- 獲取當前時間 SELECT CURDATE() -- 獲取當前時間 SELECT NOW() -- 獲取當前時間 (時分秒) SELECT LOCALTIME() -- 獲取當前時間 (時分秒) SELECT SYSDATE() -- 獲取當前時間 (時分秒) -- 年月日時分秒 SELECT YEAR(NOW()) SELECT MONTH(NOW()) SELECT DAY(NOW()) SELECT HOUR(NOW()) SELECT MINUTE(NOW()) SELECT SECOND(NOW()) -- 系統 SELECT SYSTEM_USER() -- 使用者 SELECT USER() -- 使用者 (簡寫)
-
聚合函式(常用)
函式名 描述 COUNT() 計數 SUM() 求和 AVG() 平均值 MAX() 最大值 MIN() 最小值
-- 聚合函式
SELECT COUNT(BornDate) FROM student -- COUNT(欄位),此格式會忽略所有的null值
SELECT COUNT(*) FROM student; -- 不會忽略null值
SELECT COUNT(1) FROM student -- 不會忽略null值
SELECT SUM(studentresult) AS 總和 FROM result
SELECT AVG(studentresult) AS 平均分 FROM result
SELECT AVG(studentresult) AS 最高分 FROM result
SELECT AVG(studentresult) AS 最低分 FROM result
分組與過濾
GROUP BY … HAVING
-- 查詢不同課程的平均分,最高分,最低分,平均分大於80
SELECT `subjectname`,AVG(studentresult) AS 平均分,MIN(studentresult) AS 最低分,MAX(studentresult) AS 最高分
FROM result r
INNER JOIN `subject` sub
ON r.subjectno = sub.subjectno
GROUP BY r.subjectno -- 通過哪個欄位來分組
HAVING 平均分 > 80
MD5加密
-- 未加密
INSERT INTO testmd5 VALUES (1,'zhang','123456'),(2,'liu','123456'),(3,'ma','123456')
-- 加密
UPDATE testmd5 SET pwd = MD5(pwd) WHERE id = 1 -- 只為id為1的加密
UPDATE testmd5 SET pwd = MD5(pwd) -- 全部加密
-- 插入時加入
INSERT INTO testmd5 VALUES (5,'zhang',MD5('123456'))
-- 將使用者傳遞進來的密碼,進行md5加密,然後比對加密後的值
SELECT * FROM testmd5 WHERE `name` = 'zhang' AND pwd = MD5('123456')
相關文章
- group by分組函式之rollup與cube用法函式
- LINQ系列:LINQ to SQL Group by/Having分組SQL
- Mysql系列第九講 分組查詢詳解(group by & having)MySql
- 過濾函式函式
- MySQL全面瓦解10:分組查詢和聚合函式MySql函式
- [MYSQL -13]過濾分組MySql
- 聚合函式與數字函式函式
- mysql與oracle的分組函式MySqlOracle函式
- sql語句之分組,聚合函式SQL函式
- MySQL - 分組連線欄位函式GROUP_CONCAT的使用MySql函式
- Elasticsearch 查詢結果分組統計,聚合檢索(group by stats)Elasticsearch
- oracle group by與分組列為null空OracleNull
- MySQL之集合函式與分組查詢MySql函式
- 區間統計 聚合函式組合器函式
- group by分組查詢
- MySQL的Group By分組MySql
- SQL 分組排序group bySQL排序
- [SQL] rollup & cube 分組函式用法及一例SQL函式
- 使用row_number()分頁函式取代group by函式
- lambda匿名函式sorted排序函式filter過濾函式map對映函式函式排序Filter
- Oracle聚合函式/分析函式Oracle函式
- python函式每日一講 - filter函式過濾序列Python函式Filter
- Stream聚合函式函式
- Django:聚合函式Django函式
- 037:函式物件的過濾器函式物件過濾器
- oracle資料庫常用分析函式與聚合函式的用法Oracle資料庫函式
- SQL分組中WHERE和HAVING的異同SQL
- sql分組查詢語句--行內分組(非聚合分組)SQL
- 6、Oracle中的分組函式Oracle函式
- DAX 第三篇:過濾器函式過濾器函式
- Django(18)聚合函式Django函式
- MySQL 聚合函式大全MySql函式
- group by,having查詢 ”每**“的查詢
- sql中的group by 和 having 用法解析SQL
- LINQ簡明教程:資料排序、分組、過濾排序
- Pandas 分組聚合操作詳解
- sql優化用group by 函式代替分析函式SQL優化函式
- 函式及分組統計和資料庫備份,恢復函式資料庫