1. 程式人生 > >【MySQL必知必會】第十三章 分組數據

【MySQL必知必會】第十三章 分組數據

num mysql 統計 where子句 rom 過濾 group by 大於 映射

1、創建分組

  輸入:

  SELECT vend_id , COUNT(*) AS num_prods

  FROM products

  GROUP BY vend_id;

  輸出:

  vend_id  num_prods

  1001    3

  1002    7

  分析:選定要顯示的列:vend_id和num_prods(行數統計列的新建的別名),選定來源表:products,分組依據:根據vend_id進行排序並進行數據分組統計。GROUP BY子句必須出現在WHERE子句之前,ORDER BY子句之後。

2、過濾分組

  使用HAVING關鍵字,語法和WHERE一致,只是過濾對象不同,一個是行,一個是組。值得註意的是,同時使用WHERE和HAVING關鍵字,WHERE關鍵字過濾掉的行,不會在HAVING關鍵字裏進行統計分組。

  輸入:

  SELECT  cust_id,COUNT (*) AS orders

  FROM  orders

  GROUP BY cust_id

  HAVING COUNT(*) >=2;

  輸出:

  cust_id  orders

  1001    2

  分析:

  輸出兩列:cust_is和orders(新建列的別名,所有行的數目,包括null行);

  表源:cust_id;

  分組過濾依據:按照cust_id列的每一行進行數據統計,並形成 cust_id-行數 的映射鍵值對,然後在根據cust_id列的順序排序映射鍵值對;

  過濾分組: cust_id-行數 映射對中 行數 大於等於2的映射對可以保留。

【MySQL必知必會】第十三章 分組數據