一句話得到 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一句話得到中間值的多條記錄
- 一句話實現欄位拆分成多行
- 一句話實現MySQL庫中的重疊分組MySql
- 一句話實現MySQL庫中的按條件變化分組MySql
- 一句話實現MySQL庫中的按連續等值分組MySql
- 一句話實現MySQL庫中的有序列舉條件分組MySql
- Python之難點元類|一句話給你安排的明明白白Python
- TF實戰Q&A丨不是一句話可以搞定的
- 我最喜歡的一句話
- 一句話解釋TransformerORM
- Ajax 跨域難題 - 原生 JS 和 jQuery 的實現對比跨域JSjQuery
- 一句話理解設計模式設計模式
- 本週AI一句話摘要AI
- 一句話總結原型鏈原型
- 一句話傷感難過朋友圈心情說說大全 找到一個發洩的出口
- 一句話總結JS的設計模式JS設計模式
- 用一句話描述Go語言的命令Go
- 新火種AI | “百模大戰”的進退兩難,被李彥宏一句話點破了AI
- 一句SQL,我的資料庫crash了SQL資料庫
- 一句話設計模式,不再迷路~設計模式
- 一句話總結隨機森林隨機森林
- swift 定位封裝一句話使用Swift封裝
- 一句話區分currentTarget和target
- 一句話計算出 TopN 的增長情況
- 令你醍醐灌頂的一句話是什麼
- 一句話的需求怎麼測?需求文件的三種現狀及應對策略
- 一句話總結LLE(流形學習)
- 一句話從 MySQL 取出重複行MySql
- 萌新之php一句話木馬PHP
- iptables一句話修復安全漏洞
- java 實現根據年月得到這個月的日曆Java
- 電話機器人是如何實現對話的?機器人
- 一句話判斷網路是否聯通
- 一句話總結人工神經網路神經網路
- 一句話總結K均值演算法演算法
- PHP一句話木馬深度詳細剖析PHP
- Counterpoint:2021年Q1擴充套件現實裝置出貨量與去年同期比翻一番套件
- php一句話獲取獲取檔案目錄的方法PHP