MySQL自娛 6 分組函式

2022-09-20 06:57:14 字數 2669 閱讀 5581

分組函式

- 功能 用作統計使用 又稱為聚合函式或統計函式或分組函式

- 分類

- sum 求和

select sum(salary) from employees;

- **g 平均值

- max 最大值

- min 最小值

- count 統計非null個數

- 引數支援哪些型別?

- sum **g一般用於處理數值型 max min count可以處理任何型別

- 以上分組函式都忽略null值

- 和distinct搭配實現去重運算

- count函式的詳細介紹

- select count(*) from employees; 用來統計總行數

- select count(1) from employees; 用來統計總行數

- 效率問題

myisam儲存引擎下, count(*)的效率高

innodb儲存引擎下, count(*)和count(1)效率差不多, 比count(字段)要高一些

- 和分組函式一同查詢的字段有限制 要求是group by後的字段

- 補充 datediff函式第乙個引數減第二個引數

分組查詢

select column, group_function(column)

from table

where condition

group by group_by_expression

order by column;

明確 where 一定放在from後面

select 分組函式,列 (要去出現在group by的後面)

from 表

where 篩選條件

group by 分組的列表

order by 子句

- 注意 查詢列表必須特殊,要求是分組函式和group by後出現的字段

select max(salary), job_id

from employees

group by job_id;

select count(*),location_id

from departments

group by location_id;

select **g(salary), department_id

from employees

where email like "%a%"

group by department_id;

select max(salary), manager_id

from employees

where commission_pct is not null

group by manager_id;

- 分組後的篩選

select count(*), department_id

from employees

group by department_id

h**ing count(*)>2;

select max(salary), job_id

from employees

where commission_pct is not null

group by job_id

h**ing max(salary) > 12000;

select min(salary), manager_id

from employees

where manager_id>102

group by manager_id

h**ing min(salary)>5000;

- 特點

- 分組查詢中的篩選條件分為兩類

資料來源 位置 關鍵字

- 分組前篩選 原始表 group by子句的前面 where

- 分組後篩選 分組後的結果集 group by自居的後邊 h**ing

- 注意

- 分組函式做條件肯定是放在h**ing字句中

- 能用分組前篩選的就有限考慮使用分組前

- group by後邊還支援哪些東西

- 按表示式或函式分組

select count(*) c, length(last_name) len_name

from employees

group by len_name

h**ing c>5;

擴充套件 where後邊不支援別名

- 按多個字段分組

select **g(salary), department_id,job_id

from employees

where department_id is not null

group by job_id,department_id

order by **g(salary) desc;

- group by子句支援單個字段分組,多個字段分組(多個字段之間用逗號隔開.沒有順序要求),表示式或函式(用的較少)

- 也可以新增排序(排序放在整個分組查詢的最後)

2066 分組統計

時間限制 1 sec 記憶體限制 32 mb 提交 474 解決 115 提交 狀態 討論版 命題人 外部匯入 先輸入一組數,然後輸入其分組,按照分組統計出現次數並輸出,參見樣例。輸入第一行表示樣例數m,對於每個樣例,第一行為數的個數n,接下來兩行分別有n個數,第一行有n個數,第二行的n個數分別對應...

模擬8 03 分組

好題 k 1做法 直接倒著找,滿足貪心性質,預處理出每個平方數就行.1 include2 include3 include 4 include5 include6 include7 include8 include 9 include10 define maxn 300001 11 define i...

4 分組聚合

引數名 接受 含義 預設 by 1.若為函式,則對索引進行計算並分組 2.若為字典 series,則將字典 series的值做為分組依據 3.若為numpy陣列,則以陣列元素為分組依據 4.若為字串 字串列表,則以其所代表的字段進行分組 無axis int表示操作軸向 0level int 索引名 ...