“李有爲,我且問你,human_base_info表面,顏值最高的妹子能有多高?”
聽完大爺的話,李有爲的嘴角情不自禁地綻開了一抹不易察覺的瀟灑而自信的笑容,“大爺,雖然你沒有給我講給排序,但是我下來已經偷偷學了,用order by 對列名排序是吧!desc是降序,asc是升序,如果沒有指定規則,則默認爲降序排序”
----- 查詢妹子的姓名和顏值,對顏值進行降序排序
SELECT
name,looks
FROM
human_base_info
WHERE
sex = 'F'
ORDER BY
looks DESC;
-----查詢妹子的姓名和顏值,對顏值進行升序排序
SELECT
name,looks
FROM
human_base_info
WHERE
sex = 'F'
ORDER BY
looks ASC;
“最漂亮的妹子顏值高達255,竟然比顏值最低的妹子足足多了250,我的天喃!”
“啪!“,一個響亮的耳光打在了李有爲頭髮,”我看你娃真的是球經不懂,抱到狗慫。
“我現在最關心的是最漂亮的妹子顏值能夠多高,你給我查一大堆妹子的名字幹什麼,雖然你的確查到了妹子的最高顏值是多少,但是這是你大爺我想要的嗎?,說到底,我想要的其實就是一個數字,不是你這一大堆東西。”
“der,你是大爺,你說的都對!”
"啪!"又是一記響亮的耳光打在李有爲弱小的身軀上,“龜兒子,還敢給老子嘴嚼,翅膀都還沒長硬,就像飛了嗦!”
今天就要你大爺教你用聚合函數,最快速的找到世界上嘴漂亮的妹子顏值有多高。
聚合函數是SQL的基本函數,其作用是對一組值執行計算,並返回單個值
看你小子是一個有色心、沒色膽的傢伙,那麼我就舉一個你最容易理解的例子。
please see here,there hava some beautiful girl info,其中包括,姓名,身高,年齡,和顏值,你是不是可以輕易的說出身高最高的妹子和身高最矮的妹子,也可以計算出妹子們的平均身高,同時也可以統計一共有多少個妹子,甚至還可以算一下妹子們的年齡和
“最高的妹子179.1,最矮的妹子170.4,妹子們的平均身高是173.475,一共有8個妹子,妹子們的年齡和是181”,聽完大爺的話,李有爲立馬脫口而出,他小學數學神童的稱號保留至今,並非浪得虛名。
**“good very good very very very good!”**大爺一邊稱讚李有爲,一邊卻又陰險的笑出了聲,”嘿嘿嘿嘿嘿嘿嘿嘿……,如果我想要看human_base_info表裏,最高的妹子有多高,最漂亮的妹子有多漂亮,妹子們的平均身高,年齡最小的妹子有多小,妹子們的數量一共有多少,妹子們的年齡和是多少,這個時候你想要怎麼辦涅?嘿嘿嘿嘿嘿嘿嘿……”
"芽兒喲,前輩,你真當我是**糞坑裏面練游泳,不怕死(屎)**索!我曉得你肯定有招式,你就說給我聽嘛!“
好,接下來就讓你看一下MySQL的五個聚合函數。
AVG() -- 返回某列的平均值
MAX() --返回某列的最大值
MIN() --返回某列的最小值
SUM() --返回某列數值之和(該列必須是數值)
COUNT() --返回該列的行數
---- 聚合函數針對特定列做計算,都會忽略空值的那一列
1 AVG
說明:AVG可以返回指定列的平均值,如果加上where條件,則返回符合條件列的平均值
----- 返回所有人的平均年齡
SELECT
AVG (age)
FROM
human_base_info
----- 返回女生的平均年齡
SELECT
AVG (age)
FROM
human_base_info
WHERE sex='F'
2、MAX 、MIN 、SUM用法類似
說明:MAX,MIN,SUM函數的用法和AVG類似,支持所有的,也支持滿足特定條件的列做聚合,這裏不做多說明
SELECT
MAX(age)
FROM
human_base_info
WHERE sex='F'
SELECT
MIN(age)
FROM
human_base_info
WHERE sex='F'
SELECT
SUM(age)
FROM
human_base_info
WHERE sex='F'
3、count
說明:count是SQL中做統計使用頻率最高的一個聚合函數,但是使用count,必須要知道count(1),count(*),count(列名)這三個的區別
1、count(1),count(*),嚴格意思上講,count(1)和count()都對所有行計數,並沒有什麼太大的區別,唯一的區別就是,count()是SQL92定義的標準統計行數的語法。(有人會說兩者中一個快些,一個慢些,但這些都問題不大。)
2、count(列名),count(列名)會篩選過濾掉該列字段不爲NULL的數據,因此效率會比count(1)和count(*)慢,但是統計結果更爲精準。
/*
這裏1、2、3句SQL統計出來的結果都是一樣的都是110519
最後一句統計出來的結果是110518,因爲我偷偷其中一個人的年齡信息修改成了空值
*/
SELECT
COUNT (1)
FROM
human_base_info
SELECT
COUNT (*)
FROM
human_base_info
SELECT
COUNT (id)
FROM
human_base_info
SELECT
COUNT (age)
FROM
human_base_info
聽完大爺的話,李有爲當下便寫了一段SQL,立馬把妹子們的信息給統計出來,原來把這個世界上的妹子算的明明白白,竟然是這麼容易的一件事情。
看完李有爲的SQL,大爺突然心生感慨,花有綠肥紅瘦,人有高矮胖醜,像你這樣簡單粗暴的求平均是不可取的,你的這種做法,你好比把你、比爾蓋茨、貝索斯、巴菲特、馬雲的財產加起來求平均值,莫名其妙的,你就成功登上了世界財富的巔峯。
這個時候,對數據進行分組就是一件很有必要的事情了。屌絲就應該屌絲一起做聚合計算,高富帥就應該和高富帥一起做聚合計算,雖然計算出的結果很殘忍,但是這樣計算出的結果纔是符合事實的真相……