一句話實現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中的SQL分組方法MySql
- 一句話從 Mysql 取每組前三名MySql
- MySQL資料庫中的分組函式ROLLUPMySql資料庫函式
- 一句話實現欄位拆分成多行
- 一句話區分currentTarget和target
- 一句話得到 SQL 難實現的去年同期比SQL
- 你們要的MyCat實現MySQL分庫分表來了MySql
- python 用 jieba 給一句話分詞PythonJieba分詞
- MySQL: kill 會話的實現原理MySql會話
- SQL實現分組limitSQLMIT
- MySQL的Group By分組MySql
- 使用淘寶中介軟體cobar實現mysql分庫分表MySql
- MYSQL——分組MySql
- 一句話從 Oracle 取每組前三名Oracle
- Kubernetes 中實現 MySQL 的讀寫分離MySql
- 3.1 MYSQL分庫分表實踐MySql
- BIRT 中根據引數實現動態日期分組
- 6-1 在一個陣列中實現兩個堆疊 (20分)陣列
- 重疊IO操作在進行中
- C++中“記憶體重疊”C++記憶體
- 如何在分組報表中實現組內資料補空行及組內頁碼
- ShardingSphere + Mysql,實現分庫分表、讀寫分離,並整合 SpringBootMySqlSpring Boot
- 《重疊實驗框架》閱讀分析框架
- MYSQL SQLServer分頁查詢的實現MySqlServer
- TF實戰Q&A丨不是一句話可以搞定的
- 利用rownum分組排序去重排序
- 圖的深度優先遍歷(堆疊實現和非堆疊實現)
- PL/SQL的每天一句話SQL
- MYSQL-實現ORACLE- row_number() over(partition by ) 分組排序功能.MySqlOracle排序
- 直播平臺原始碼,RecycleView實現item重疊水平滑動原始碼View
- MySQL主從分離實現MySql
- MYSQL和INNODB分層實現MySql
- mysql使用group by實現組內排序實戰MySql排序