收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 資料

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操作比較耗時,所有我們可以分步驟進行,或者建立視圖。

  大家在看    
我以為自己MySQL夠牛逼了,直到看到了Alib

我以為自己MySQL夠牛逼了,直到看到了Alib

大數據學習什麼數據庫?

大數據學習什麼數據庫?

Linux導入、導出 MySQL數據庫命令

Linux導入、導出 MySQL數據庫命令

圖文詳解!吃透 MySQL中處理分層數據的模型手

圖文詳解!吃透 MySQL中處理分層數據的模型手

展會|萬裏數據庫受邀2021DTCC 展現新一代

展會|萬裏數據庫受邀2021DTCC 展現新一代

查詢速度提升10倍!StarRocks在格洛博電

查詢速度提升10倍!StarRocks在格洛博電

MySQL與Redis緩存一致性問題

MySQL與Redis緩存一致性問題

新同事上來就優化了一遍MySQL索引和查詢,老板

新同事上來就優化了一遍MySQL索引和查詢,老板

MySQL存儲過程小玩一下

MySQL存儲過程小玩一下

MySQL第1課:認識數據庫並安裝MySQL數據

MySQL第1課:認識數據庫並安裝MySQL數據