【MySQL】條件查詢之排序聚合分組分頁查詢


排序查詢

  • 語法:order by 子句

    • order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
  • 排序方式:

    • ASC:升序,默認的。
    • DESC:降序。
  • 注意:

    • 如果有多個排序條件,則當前邊的條件值一樣時,才會判斷第二條件。

聚合函數

將一列數據作為一個整體,進行縱向的計算。

  1. count:計算個數

    一般選擇非空的列:主鍵

    select count(id) from 表名

  2. max:計算最大值

  3. min:計算最小值

  4. sum:計算和

  5. avg:計算平均值

注意:聚合函數的計算,排除null值。

解決方案:

1. 選擇不包含非空的列進行計算
2. IFNULL函數

分組查詢:

  1. 語法:group by 分組字段;

  2. 注意:

    1. 分組之后查詢的字段:分組字段、聚合函數
    2. where 和 having 的區別?
      • where 在分組之前進行限定,如果不滿足條件,則不參與分組。having在分組之后進行限定,如果不滿足結果,則不會被查詢出來
      • where 后不可以跟聚合函數,having可以進行聚合函數的判斷。
    -- 按照性別分組。分別查詢男、女同學的平均分
	
	SELECT sex , AVG(math) FROM student GROUP BY sex;
	
	-- 按照性別分組。分別查詢男、女同學的平均分,人數
	
	SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
	
	--  按照性別分組。分別查詢男、女同學的平均分,人數 要求:分數低於70分的人,不參與分組
	SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
	
	--  按照性別分組。分別查詢男、女同學的平均分,人數 要求:分數低於70分的人,不參與分組,分組之后。人數要大於2個人
	SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
	
	SELECT sex , AVG(math),COUNT(id) 人數 FROM student WHERE math > 70 GROUP BY sex HAVING 人數 > 2;

分頁查詢

  1. 語法:limit 開始的索引, 每頁查詢的條數;

  2. 公式:開始的索引 = (當前的頁碼 - 1) * 每頁顯示的條數

exam:每頁顯示3條記錄

	SELECT * FROM student LIMIT 0,3; -- 第1頁
	SELECT * FROM student LIMIT 3,3;  -- 第2頁
	SELECT * FROM student LIMIT 6,3;  -- 第3頁


免責聲明!

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



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