[toc]
## 聚合函數
求和、求平均數、求最大值、最小值、四舍五入、總記錄數(不包含null)
### SUM
```
計算ID=1的學生的的總分
select SUM(grade) as '總分' from score where student_id = 1;
```
### AVG
```
計算ID=1的學生的的平均分
select AVG(grade) as '平均分' from score where student_id = 1;
```
### MAX、MIN
```
計算ID=1的學生的的平均分
select AVG(grade) as '平均分',MAX(grade) 最高分,MIN(grade) 最低分 from score where student_id = 1;
```
### ROUND
ROUND(...,n)
### 關于count
- 若select的字段對應的記錄的信息為null,count是不會算的
- count中若是一個常量,會添加一列
```
SELECT COUNT(1) FROM score
```
## 分組
分組查詢就是按某列的值進行分組,相同的值分成一組,然后可以對此組內進行求平均、求和等計算
>語法:
>SELECT 列名,查詢表達式
FROM <表名>
WHERE <條件>
GROUP BY <分組字段>
HAVING 分組后的過濾條件
ORDER BY 列名 [ASC,DESC]
LIMIT 偏移量,條數
### 注意事項
>having 過濾的是分組后得到的列表里的
>SELECT列表中只能包含:
>- 被分組的列
>- 為每個分組返回一個值的表達式,如聚合函數

## 子查詢
### 比較運算與子查詢

### all 與 子查詢
大于最大值

等于`select MAX(age) from...`
### any
ALL 全部
```
from student WHERE age = ANY (SELECT age FROM student WHERE province = '陜西省')
```
### some
SOME 某些
```
SELECT * from student WHERE age = SOME (SELECT age FROM student WHERE province = '陜西省')
```
### in/not in;exists/not exists
## 表連接
### 連接類型
- JOIN=INNER JOIN=CROSS JOIN 內連接
- LEFT [OUTER] JOIN 左外連接
- RIGHT [OUTER] JOIN 右外連接
- ON 連接條件

### 內連接
兩種寫法
