一句話實現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 還保證了返回結果集的次序,並且沒有匹配上的記錄也不會被遺漏。
SPL 還能實現更多非常規分組,可參考 。
當資料不在資料庫裡時,SPL 執行復雜計算仍然方便:
=file(“d:/t.csv”).import(;,",").enum...
SPL能很方便地嵌入到JAVA應用,可參考 。
具體使用方法可參考 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700912/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一句話實現MySQL庫中的按連續等值分組MySql
- 一句話實現MySQL庫中的有序列舉條件分組MySql
- 一句話實現MySQL庫中的按條件變化分組MySql
- 一句話從 MySQL 取出重複行MySql
- MySQL實現分組排序MySql排序
- 一句話從 Mysql 取每組前三名MySql
- MySQL資料庫中的分組函式ROLLUPMySql資料庫函式
- 一句話實現欄位拆分成多行
- 一句話區分currentTarget和target
- 一句話得到 SQL 難實現的去年同期比SQL
- 你們要的MyCat實現MySQL分庫分表來了MySql
- Kubernetes 中實現 MySQL 的讀寫分離MySql
- MySQL: kill 會話的實現原理MySql會話
- ShardingSphere + Mysql,實現分庫分表、讀寫分離,並整合 SpringBootMySqlSpring Boot
- 3.1 MYSQL分庫分表實踐MySql
- MYSQL——分組MySql
- 一句話從 Hive 取每組前三名Hive
- 一句話從 Oracle 取每組前三名Oracle
- NetCore框架WTM的分表分庫實現NetCore框架
- 一句話得到中間值的多條記錄
- 6-1 在一個陣列中實現兩個堆疊 (20分)陣列
- TF實戰Q&A丨不是一句話可以搞定的
- 我最喜歡的一句話
- [Mysql]分庫分表MySql
- MySQL主從分離實現MySql
- MySQL分庫分表的原則MySql
- python中的scikit-learn庫來實現SVM分類器。Python
- mysql group_concat 實現把分組欄位寫成一行的方法MySql
- 直播賣貨系統,如何實現mysql資料庫的讀寫分離MySql資料庫
- 《重疊實驗框架》閱讀分析框架
- 一句話解釋TransformerORM
- BIRT 中根據引數實現動態日期分組
- 直播平臺原始碼,RecycleView實現item重疊水平滑動原始碼View
- 實現MySQL資料庫的實時備份MySql資料庫
- 一句話說明白C#中的new與override的區別C#IDE
- Java利用Comparator實現分組排序Java排序
- 關於位元組跳動的神話與現實(上)
- 關於位元組跳動的神話與現實(下)