PostgreSQL與Rust的聚合實現比較
在使用PostgreSQL時,使用SUM(vals)或AVG(vals)這樣的函式是一種常見的習慣。這些聚合函式為使用者提供了一種簡單、有效的方法來計算一組輸入的結果。
定義一個聚合是透過CREATE AGGREGATE和CREATE FUNCTION,這裡是一個只針對整數的sum的重新實現:
CREATE FUNCTION example_sum_state( state integer, next integer ) RETURNS integer LANGUAGE SQL STRICT AS $$ SELECT $1 + $2; $$; CREATE AGGREGATE example_sum(integer) ( SFUNC = example_sum_state, -- State function STYPE = integer, -- State type INITCOND = '0' -- Must be a string or null ); SELECT example_sum(value) FROM UNNEST(ARRAY [1, 2, 3]) as value; -- example_sum -- ------------- -- 6 -- (1 row) |
從概念上講,聚合迴圈了輸入中的每個專案,並對當前狀態以及每個值執行SFUNC函式。這段程式碼類似於:
fn example_sum(values: Vec<isize>) -> isize { let mut sum = 0; for value in values { sum += value; } sum } |
更多點選標題
相關文章
- PostgreSQL與MySQL的比較 - hackrMySql
- Rust, Go與Hasekll比較 - RedditRustGo
- PostgreSQL、Redis與Memcached的效能比較 - CYBERTECSQLRedis
- C++與Rust變數宣告的比較C++Rust變數
- C++與Rust操作裸指標的比較C++Rust指標
- C++與Rust引用外部符號的比較C++Rust符號
- 什麼是聚合支付,哪家聚合支付比較好?
- Rust與Go在區塊鏈中的應用比較 - definoobsRustGo區塊鏈
- Rust的Vector vs. Golang的Slice比較RustGolang
- 從JS和Rust的析構比較中發現Rust哲學:顯性化 - PaulJSRust
- BST查詢結構與折半查詢方法的實現與實驗比較
- 什麼是聚合支付?聚合支付哪家平臺比較好?
- 單點登入原理與技術實現比較
- 比較Spotify和Netflix產品聚合 - Thompson
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- Python、JavaScript和Rust的Web效能比較 - AlexPythonJavaScriptRustWeb
- 使用Go的Defer和Rust的Drop實現資料庫事務機制的比較 - DEVGoRust資料庫dev
- 360°全方位比較PostgreSQL和MySQLMySql
- 2024 年 Go 與 Rust 的較量GoRust
- 如何比較版本號--Python實現Python
- 幾種分散式呼叫鏈監控元件的實踐與比較(二)比較分散式元件
- 一款資料庫比較與同步軟體的設計與實現資料庫
- volatile與Atomic的比較
- ==與equals比較
- 通過Comparable來實現對自身的比較
- 前端動畫效果實現的簡單比較前端動畫
- 如何實現不完全字典比較的 helper
- 實現saas多租戶方案比較
- MVVM與MVC模式的比較MVVMMVC模式
- XTask與RxJava的使用比較RxJava
- Flutter與React Native的比較FlutterReact Native
- Oracle與PostgreSQL比較:PostgreSQL至少在安裝和大小方面擊敗了Oracle - foersterOracleSQL
- Go 與 C++ 的對比和比較GoC++
- LVS和Nginx實現負載均衡功能的比較Nginx負載
- Java動態代理 jdk和cglib的實現比較JavaJDKCGLib
- jmeter混合場景的多種實現方式比較JMeter
- 簡單介紹Go 字串比較的實現示例Go字串
- Hibernate與mybatis比較MyBatis