一句話得到 SQL 難實現的去年同期比
按年、月分組,彙總得到每個月的合計值,沒什麼難的,就是個常規 group 操作。下一步是找到去年該月,資料整齊有序的話,向上第 12 條記錄,肯定就是去年該月。但 SQL 無法單獨的表述記錄物件,也沒有集合中相對位置的計算能力,得變通成自關聯,把兩條要計算的記錄 join 成一條記錄,再做記錄內的多欄位計算:
with t as (select year(f1) y, month(f1) m, sum(f2) n
from A
group by y,m)
select t1.*,t1.n/t2.n r
from t t1 join t t2
on t1.y=t2.y+1 and t1.m=t2.m
這種透過 join 把跨行計算轉換成行內計算,會增加思維負擔和解題難度。
如果使用集算器 SPL 語言就會簡單很多,它對有序集合計算就支援的比較徹底,能清楚表述集合中任意位置的記錄,透過絕對 / 相對位置定位,如下輕易描述出向上第 12 行記錄後,一行程式碼就搞定了:
=connect(”mysqlDB”).query(“select * from A”).groups(year(f1):y,month(f1):m;sum(f2):n).sort(y,m).derive(n/~[-12].n:r)
有序集合除了定位計算,還有非常規迭代聚合、有序迴圈、有序排名等多種計算手段,參考 ,這些技術對提高計算效能、簡化計算程式設計很有幫助。
當資料不在資料庫裡時,SPL 執行復雜計算仍然方便:
=file(“d:/t.csv”).import(;,",").groups...
SPL能很方便地嵌入到JAVA應用,可參考 。
具體使用方法可參考 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69900830/viewspace-2700379/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PL/SQL的每天一句話SQL
- 一句話實現欄位拆分成多行
- 9*9乘法口決pl/sql的多種方法實現(一句sql實現)SQL
- 一句話實現MySQL庫中的重疊分組MySql
- 一句話實現MySQL庫中的按條件變化分組MySql
- 一句話實現MySQL庫中的按連續等值分組MySql
- 一句話實現MySQL庫中的有序列舉條件分組MySql
- 一句SQL實現輸出九九乘法表SQL
- oracle實用sql(7)--單個會話或會話間statistics對比OracleSQL會話
- Python之難點元類|一句話給你安排的明明白白Python
- TF實戰Q&A丨不是一句話可以搞定的
- 一句話入門SEO
- Linux一句話收藏Linux
- Ajax 跨域難題 - 原生 JS 和 jQuery 的實現對比跨域JSjQuery
- 一句話解釋數字簽名。一句話解釋數字證書
- 一句話理解設計模式設計模式
- 一句話總結原型鏈原型
- ORACLE一句話問答(一)Oracle
- ORACLE 一句話問答(二)Oracle
- 摘抄biti大師一句話
- Linux 一句話命令收藏Linux
- 一句話經驗總結
- 一句話解釋TransformerORM
- 本週AI一句話摘要AI
- 一句sql,批量更新SQL
- SQL Server相似比較演算法實現SQLServer演算法
- 用一句話描述Go語言的命令Go
- 一句話總結JS的設計模式JS設計模式
- 一句話的翻譯引發的爭論
- 新火種AI | “百模大戰”的進退兩難,被李彥宏一句話點破了AI
- 一句話設計模式,不再迷路~設計模式
- 一句話區分currentTarget和target
- 一句話總結隨機森林隨機森林
- 萌新之php一句話木馬PHP
- swift 定位封裝一句話使用Swift封裝
- choop.php一句話指令碼OOPPHP指令碼
- SAP一句話入門:Material Management
- SAP一句話入門:Project SystemProject