3.關鍵字排序(order的升序和降序)、模糊查詢、分組


1.order

按升降序排序

SELECT * FROM employees
ORDER BY  salary ASC/DESC; #asc代表升序 desc代表降序 默認升序

按表達式排序

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
 FROM employees
WHERE department_id>=90 
ORDER BY  salary*12*(1+IFNULL(commission_pct,0);
#ORDER BY  年薪 DESC;#按別名排序
SELECT LENGTH (last_name) 字節長度,last_name,salary
FROM employees
ORDER BY LENGTH(last_name) DESC;#按函數排序

按多個字段排序

SELECT * FROM employees
ORDER BY salary ,employee_id  DESC;

2.模糊查詢

通配符
%任意多個字符 _任意單個字符

SELECT * FROM employees
WHERE last_name LIKE '%a%';

SELECT last_name 姓,salary  FROM employees
WHERE last_name LIKE '__s_i%';

SELECT last_name 姓,salary  FROM employees
WHERE last_name LIKE '_\_%';   // \是轉義字符

SELECT last_name 姓,salary  FROM employees
WHERE last_name LIKE '_(_%' ESCAPE '('; //escape表轉義
#between and  
#不能顛倒順序 等價於 大於等於1000 小於等於3000  提高簡潔度
SELECT *  FROM employees
WHERE salary  BETWEEN 1000 AND 3000; 

#IN 表示 或         簡潔  
SELECT *  FROM employees
WHERE job_id IN('IT_PROG','AD_VP','AD_PRES')

#is null/IS NOT NULL 判斷是否是null
SELECT last_name ,commission_pct 獎金率 FROM employees
WHERE commission_pct IS NOT NULL;

分組函數

SELECT SUM(salary) 求和,AVG(salary) 平均值,MAX(salary) 最大值,MIN(salary) 最小值,COUNT(salary) 個數
FROM employees;
# 建議使用 count(*)
SELECT  COUNT(DISTINCT salary),COUNT(salary)  ,
SUM(DISTINCT salary),SUM(salary) FROM employees;//distinct去重

分組前篩選 在原表篩選where 能用where優先用where

3.分組查詢 group by

#每個工種最高薪
SELECT MAX(salary),job_id
FROM employees
GROUP BY job_id;
#每個位置部門個數
SELECT COUNT(*),location_id
FROM departments
GROUP BY location_id;
#有篩選條件 郵箱含a的 部門平均工資
SELECT AVG(salary) ,department_id,email
FROM employees
WHERE email LIKE '%a%'
GROUP BY department_id;
#分組后篩選 (having)部門員工個數>2 
SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 2;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM