溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現(xiàn)MySQL庫中的重疊分組

發(fā)布時間:2021-09-16 14:47:03 來源:億速云 閱讀:214 作者:chen 欄目:云計算

這篇文章主要講解了“怎么實現(xiàn)MySQL庫中的重疊分組”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么實現(xiàn)MySQL庫中的重疊分組”吧!

枚舉多個條件進行分組時,可能發(fā)生重疊,重疊部分僅計入某個組,還是計入所有符合條件的組,這在寫 SQL 時,寫法大不相同。

只計入第一個符合條件的組時,可以通過 case when 轉(zhuǎn)換成常規(guī)分組,例如:
select (case
              when age<=18 then ‘Teenager’
              when age>=16 and age<=30 then ‘Youth’
              when age>=28 and age<=45 then ‘MiddleAge’ end) g
       ,count(*) n
from A
group by g

如果重疊部分要計入所有組時,就麻煩多了。SQL 只支持等值分組,無法實現(xiàn)外部定義分組,對位分組。一般也就只能針對每個條件遍歷,然后再把結(jié)果集 union 到一起,條件多時, SQL 語句規(guī)模和性能都堪憂:
(select ‘Teenager’ g, count(*) n
from A
where age<=18)
union
…Youth…
union
…MiddleAge…

這種非常規(guī)分組如果用集算器 SPL,就容易得多。比如上面的問題把組條件和名稱通過參數(shù)傳進來 >w=[?<=18,?>=16&&?<=30,?>=28&&?<=45]
>wn=["Teenager","Youth","MiddleAge"]

只要一句話就能實現(xiàn)不重疊 / 重疊(增加@r選項)分組:
=connect(”mysqlDB”).query(“select * from A”).enum@r(w, age).new(wn(#):g, ~.len():n)

這句 SPL 還保證了返回結(jié)果集的次序,并且沒有匹配上的記錄也不會被遺漏。

感謝各位的閱讀,以上就是“怎么實現(xiàn)MySQL庫中的重疊分組”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么實現(xiàn)MySQL庫中的重疊分組這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI