1、with 查詢
先通過乙個簡單的 cte 示例了解 with 查詢,如下所示:
with t as (
select generate series(l,3)
select * from t;
generate_series
--------------------12
3(3 rows)
遞迴查詢使用 cte:
with 查詢的 乙個重要屬 性是 recursive ,使用 recursive 屬性可以引用自己的輸出,從而實現遞迴, 一般用於層次結構或樹狀結構的應用場景,乙個簡單的recursive 例子如下所示
with recursive t (x) as (
select 1
union
select x + 1
from t
where x < 5
)select sum(x) from t;
輸出結果為
sum
15 (1 row)
2、聚合函式
string_agg 函式:此函式語法如下所示:
string_agg(expression , delimiter)
簡單地說 string_agg 函式能將結果集某個欄位的所有行連線成字串,並用指定delimiter 分隔符分隔, expression 表示要處理的字元型別資料;引數的型別為(text, te~t)或(bytea, bytea ,函式返 回的型別同輸入引數型別一致, by tea 屬於 進製型別,使用情況不多,我們主 介紹 text 型別輸入引數,乙個例子:
mydb=> select * from city;
country city
------------+--- ---
中國 | 台北
中國 |香港
中國 |上海
日本 東京
日本 大阪
(5 rows)
將city 段連線成 符串的**如下:
mydb=> select str ng agg c 工 ty ,』,』) from city;
string_agg
台北,香港,上海,東京,大阪
(1 r ow )
array_agg 函式:array_agg 函式和 string_agg 函式類似,主要的區別為返回的型別為 陣列,陣列資料型別同輸入 引數資料型別 一致, array_agg 函式支援兩種語 第一種如下
array_agg (expression ) 輸入引數為任何非陣列型別
輸入 數可以是任何非陣列型別,返回的結果是一維陣列 array_agg 函式將結果集某個欄位的所有行連線成陣列,例如執行以下 詢:
mydb=> select coutry array_agg(city) from city group by country;
country array_agg
-- + ------
日本 | {東京 大阪}
中國 | {台北 香港 上海}
第二種 array_agg 語法如下所示:
array_agg (expression ) 輸入引數為任何陣列型別
返回型別為多維陣列:例如:
資料如下所示:
select * from test_aray;
id-------------------------
(2 rows)
使用 array_agg 函式 如下
mydb=> select array_ agg(id) from test_arra y3 ;
array_agg
} (1 r ow )
PostgreSQL 內建高可用方案
注意 以下內容翻譯與postgresql 10.3 高可用篇 是sdf 修改過的乙個檔案系統複製的版本 若乙個電腦的檔案系統發生變化,則這些改變會被映象複製到其他所有的檔案系統中。唯一的約束是 映象複製的時候必須確保 從庫和要複製的檔案系統已經保持一致,尤其是 往從庫 寫操作的時候必須是和往主庫寫是...
高併發實戰
參考書籍netty,redis,zookeeper高併發實戰 作者 尼恩 鏈結 netty是jboss提供的乙個j a開源框架,是基於nio的客戶端 伺服器程式設計框架,它既能開發高併發,高可用,高可靠性的網路伺服器程式,也可以開發高可用,高可靠的客戶端程式 乙個可以快速儲存的記憶體資料庫,redi...
Postgresql12主從配置及切換
一 主從安裝 1 依據 centos7安裝最新版postgresql 操作,注意個別細節選擇主從配置 2 注意 從伺服器只能查詢,不能寫入 3 主庫ip 103,備庫ip 104 二 主伺服器 1 新增pg用於同步的使用者名稱 su postgres psql 建立具有複製流操作的使用者 repli...