分組函式
- 功能 用作統計使用 又稱為聚合函式或統計函式或分組函式
- 分類
- 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 索引名 ...