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比較MySql
- PostgreSQL與MySQL的比較 - hackrMySql
- Rust, Go與Hasekll比較 - RedditRustGo
- PostgreSQL、Redis與Memcached的效能比較 - CYBERTECSQLRedis
- C++與Rust變數宣告的比較C++Rust變數
- C++與Rust引用外部符號的比較C++Rust符號
- C++與Rust操作裸指標的比較C++Rust指標
- ISAPI 與CGI 的 比 較 及 其 實 現 (轉)API
- 現代語言Go、Rust、Swift和Dart的比較GoRustSwiftDart
- 手工實現整除除法的比較
- Rust與Go在區塊鏈中的應用比較 - definoobsRustGo區塊鏈
- Rust的Vector vs. Golang的Slice比較RustGolang
- 什麼是聚合支付?聚合支付哪家平臺比較好?
- 從JS和Rust的析構比較中發現Rust哲學:顯性化 - PaulJSRust
- BST查詢結構與折半查詢方法的實現與實驗比較
- 單點登入原理與技術實現比較
- 幾種任務排程的 Java 實現方法與比較Java
- Java,Go和Rust之間的比較 - DexterJavaGoRust
- 使用Go的Defer和Rust的Drop實現資料庫事務機制的比較 - DEVGoRust資料庫dev
- 360°全方位比較PostgreSQL和MySQLMySql
- 資料庫比較 PostgreSQL vs MongoDB資料庫SQLMongoDB
- Python、JavaScript和Rust的Web效能比較 - AlexPythonJavaScriptRustWeb
- 前端動畫效果實現的簡單比較前端動畫
- postgresql 聚合的暗坑SQL
- postgresql聚合的暗坑SQL
- 幾種分散式呼叫鏈監控元件的實踐與比較(二)比較分散式元件
- 一款資料庫比較與同步軟體的設計與實現資料庫
- 如何實現不完全字典比較的 helper
- 實現saas多租戶方案比較
- 如何比較版本號--Python實現Python
- Java中不同的併發實現的效能比較Java
- Oracle與PostgreSQL比較:PostgreSQL至少在安裝和大小方面擊敗了Oracle - foersterOracleSQL
- MVVM與MVC模式的比較MVVMMVC模式
- XTask與RxJava的使用比較RxJava
- JavaScript 與 Java、PHP 的比較JavaScriptPHP
- Hadoop與Spark的比較HadoopSpark
- CMM/CMMI 與敏捷的比較敏捷
- Hibernate與 MyBatis的比較MyBatis