您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么實現MySQL庫中的重疊分組”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么實現MySQL庫中的重疊分組”吧!
枚舉多個條件進行分組時,可能發生重疊,重疊部分僅計入某個組,還是計入所有符合條件的組,這在寫 SQL 時,寫法大不相同。
只計入第一個符合條件的組時,可以通過 case when 轉換成常規分組,例如:
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 只支持等值分組,無法實現外部定義分組,對位分組。一般也就只能針對每個條件遍歷,然后再把結果集 union 到一起,條件多時, SQL 語句規模和性能都堪憂:
(select ‘Teenager’ g, count(*) n
from A
where age<=18)
union
…Youth…
union
…MiddleAge…
這種非常規分組如果用集算器 SPL,就容易得多。比如上面的問題把組條件和名稱通過參數傳進來 >w=[?<=18,?>=16&&?<=30,?>=28&&?<=45]
>wn=["Teenager","Youth","MiddleAge"]
只要一句話就能實現不重疊 / 重疊(增加@r選項)分組:
=connect(”mysqlDB”).query(“select * from A”).enum@r(w, age).new(wn(#):g, ~.len():n)
這句 SPL 還保證了返回結果集的次序,并且沒有匹配上的記錄也不會被遺漏。
感謝各位的閱讀,以上就是“怎么實現MySQL庫中的重疊分組”的內容了,經過本文的學習后,相信大家對怎么實現MySQL庫中的重疊分組這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。