天天看點

關于group by 和max函數一起使用的坑

前幾天去參加一場面試,面試過程中有被問到一個SQL語句的問題,很遺憾沒有回答上來,結果一面直接挂(問完這個問題後,當我聽到面試官對我說:你有什麼想問我的嗎? 我的内心一片涼涼)。

其實面試官問的問題聽起來很簡單,一張劇目演出表,表中有(劇目ID,劇目名稱,演出機關,票房),問:查詢出每個演出機關票房最高的劇目名稱。(聽起來很簡單吧)

我給面試官的答案是:select name,desp,max(price) from show_plan group by desp;

(name是劇目名稱,desp是演出機關,price是票房)

現在我們執行下看看結果:

關于group by 和max函數一起使用的坑
關于group by 和max函數一起使用的坑

第二張圖檔對比第一張有沒有發現name字段資訊不對?

雖然找到的是最大的price,但是與之比對的劇目名稱name卻不對應,而是group by分組後的第一條記錄的基本資訊。

如果使用以下的語句進行查找,則可以傳回正确的結果。

關于group by 和max函數一起使用的坑
關于group by 和max函數一起使用的坑