91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle、MySQL、Hive 等數據庫如何統計連續相同

發布時間:2020-07-30 13:05:33 來源:網絡 閱讀:172 作者:raqsoft 欄目:大數據

在數據庫里統計某個字段中相同數據直接用Group by就可以了,但如果附加個順序條件后就有點麻煩了,例如,統計每一個玩家的連勝或者連敗情況。 Oracle有窗口分析函數,需要多層嵌套加上高級分析函數才能實現,Mysql、Hive等數據庫不如Oracle強大,實現起來就比較費勁了。集算器作為應用和數據庫的中間計算層,可以用統一的方式,很簡單就能解決此類問題。先看一個簡單的例子,表logs?如下,求num中連續?出現3次以上的數字都有哪些?

+----+-----+

|?id?|?num?|

+----+-----+

|?1??|??1??|

|?2??|??1??|

|?3??|??1??|

|?4??|??2??|

|?5??|??1??|

|?6??|??2??|

|?7??|??2??|

+----+-----+

集算器的代碼是這樣的,


A
1$select id,num from logs
2=A1.group@o(num)
3=A2.select(~.len()>=3).(~.num)

A1:sql取數

A2:按照相鄰num同值分組

A3:選出至少連續出現三次相同的num

如果想知道相同連續值最大有多少條記錄,A3中的表達式改為=A2.max(~.len())即可。

有些需求不是按順序有相同值,是按順序有相同趨勢,比如,找出連續虧損達三月或以上的那些月份的記錄,用集算器很簡單,只是把相鄰數據分組規則從等值條件改為趨勢條件即可。代碼參考如下:


A
1=db.query("select * from 收支表 order by 月份")
2=A1.group@o(收入>支出).select(~.收入<~.支出 && ? ~.len()>=3).conj()

?

考勤記錄合并進出狀態也是類似的情況,在電商、物流和銀行也常遇到統計用戶連續交易的總額、連續登陸天數、連續登陸開始和結束時間、間隔天數等這樣的需求,都可以仿照這些例子很快實現。其實還有很多情況用SQL十分不方便,但用集算器卻很簡單,感興趣可以看看集算器優化 SQL 示例匯總 。集算器提供了Jdbc接口,Java可直接調用,使用非常方便,有關集算器安裝使用、獲得免費授權和相關技術資料,參見 如何使用集算器。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九龙城区| 栾城县| 寻乌县| 太湖县| 三门峡市| 古蔺县| 禄丰县| 枣强县| 蓝田县| 绵阳市| 巴林右旗| 叶城县| 大竹县| 临颍县| 虎林市| 望都县| 项城市| 昌图县| 邓州市| 大埔区| 天台县| 华阴市| 察哈| 枞阳县| 左权县| 怀安县| 天峻县| 福州市| 涟水县| 乌苏市| 绥宁县| 临沂市| 黄浦区| 囊谦县| 鹤峰县| 金湖县| 皮山县| 威远县| 邢台市| 垫江县| 舞阳县|