More  

小編的世界 優質文選 資料

MySQL數據庫聚合,如何通過group by過濾次相同組數量最多的列


2020年12月25日 - 資料小編  
   

我聊Python

描述: 按照c1,c2,c3分組,得到結果集

但是要得到c4,結果最多那個。

建表添加測試集

解決方案

解決問題思路

需要做兩次group by,第一次group by統計出前三項相同的組出現的次數,然後對數量做倒序排列,group by的特點,相同組的數據只取第一條,所以為了拿到數量最多的,我們需要對數量做倒序排列。

第二次group by才是真正的拿到數據,相同組的第一條數據

pgSQl的解決方案

當時想到pgsql其實更好處理這個問題,不用想這個麻煩,異曲同工之妙。WITH……AS,pgsql顯得更加的強大些。

知識擴展

mysql中count為什麼需要參數,count(1)和count(*),count(a)有什麼區別,其實count(1)和count(*)每什麼區別,有區別的是count(a),它會過濾掉a = NULL的記錄, 所有count(a) <= count(1) or count(*)

總結

MySQl和pgSQL功能實在太強大了,關系查詢的特性,幫助我們減少了代碼量,提升了工作效率。

自己對數據庫的知識尚且薄弱,仍有很多知識需要學習的。

如果表的行數特別大的話,可能兩次group by操作比較耗時,所有我們可以分步驟進行,或者建立視圖。

  大家在看