您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么實現(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)注!
免責聲明:本站發(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)容。