mysql 14.12_MySQL必知必会12-14 汇总 分组 子查询
12 匯總數據-用聚集類函數
用于諸如:表中的行數、表中行組的和、列中的最大值平均值等。
(python的dataframe 在輸出此類結果時有優勢)
MySQL 五個聚集函數(其它還有:標準偏差聚集函數等)
AVG()
COUNT()
MAX()
MIN()
SUM()
SELECT AVG(alltotal) FROM yc_tmp;
SELECT MAX(alltotal),MIN(alltotal) FROM yc_tmp
# 若只聚集不同的值,用distinct-- p ;
13 分組和排序
13.1 分組 Group by
可以跟多個變量,相當于嵌套分組;
除聚集計算語句外,select的每列均需在group by 子句中給出。
Null 值會單獨分為一組;
順序:group by 必需在where子句之后,order by 子句之前
SELECT province,Max(alltotal) as max_total
,AVG(alltotal) as avg_total FROM yc_tmp
group by province;
13.2 過濾分組 having
having過濾分組,而where只過濾行。
二者用法相同,功能也類似。having可以替代where的功能
SELECT province,Max(alltotal) as max_total
,AVG(alltotal) as avg_total FROM yc_tmp
group by province
having avg_total >1000;
也會有同時使用的情形。
另外:用where是先過濾,再分組計算,having是分組計算后再過濾
SELECT province,Max(alltotal) as max_total
,AVG(alltotal) as avg_total FROM yc_tmp
where province not in ('陜西','湖北')
group by province
having avg_total >1000
order by avg_total;
未排序結果
13.3 排序 order by
group by 出來的結果有時看起來是按分組排序的,但SQL并無此機制,故:若需要排序結果,必需用order by 指明。
排序結果
語句順序:
Select
from
where
group by
having
order by
limit
14 子查詢
子查詢可用來:
實現過濾,A表中的數據符合B表某些條件時顯示;
提供計算字段。
實現過濾的用法
一般順序:先從B表中查詢到需要的數據
再把該數據結果,放在下一個查詢語句中使用。
子查詢可以將這兩個過程嵌套起來。
Select cust_id
from orders
Where order_num in ( select order_num
from orderitems
Where prod_id = 'TNT2') ;
子查詢可以多級嵌套,在使用時建議使用多行,并且適當縮進
注意效率,比對項較多時,速度會慢……
實現字段計算
即正常查詢語句中的某一字段,是從其它表中查詢過來的。
select cust_name,
(select count(*)
from orders
Where orders.cust_id = customers.cust_id ) as orders
from customers
總結
以上是生活随笔為你收集整理的mysql 14.12_MySQL必知必会12-14 汇总 分组 子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动感灯箱制作流程培训_2000多年的灯箱
- 下一篇: java重定向cookie_respon