前幾天去參加一場面試,面試過程中有被問到乙個sql語句的問題,很遺憾沒有回答上來,結果一面直接掛(問完這個問題後,當我聽到面試官對我說:你有什麼想問我的嗎? 我的內心一片涼涼)。
其實面試官問的問題聽起來很簡單,一張劇目演出表,表中有(劇目id,劇目名稱,演出單位,票房),問:查詢出每個演出單位票房最高的劇目名稱。(聽起來很簡單吧)
我給面試官的答案是:select name,desp,max(price) from show_plan group by desp;
(name是劇目名稱,desp是演出單位,price是票房)
現在我們執行下看看結果:
第二張對比第一張有沒有發現name欄位資訊不對?
雖然找到的是最大的price,但是與之匹配的劇目名稱name卻不對應,而是group by分組後的第一條記錄的基本資訊。
如果使用以下的語句進行查詢,則可以返回正確的結果。
關於GROUP BY和聚合函式
寫在前面的話 用了好久group by,今天早上一覺醒來,突然感覺group by好陌生,總有個筋別不過來,為什麼不能夠select from table group by id,為什麼一定不能是 而是某乙個列或者某個列的聚合函式,group by 多個字段可以怎麼去很好的理解呢?不過最後還是轉過來...
group by 和 聚合函式
01.from test 該句執行後,應該結果和表1一樣,就是原來的表。02.from test group by name 該句執行後,我們想象生成了虛擬表3,如下所圖所示,生成過程是這樣的 group by name,那麼找name那一列,具有相同name值的行,合併成一行,如對於name值為a...
group by和聚合函式
原文 為什麼不能夠select from table group by id,為什麼一定不能是 而只能是某乙個列或者某個列的聚合函式,group by 多個字段可以怎麼去很好的理解呢?正文開始 先來看下表1,表名為test 表一 test 執行如下sql語句 select name from tes...