在 Excel 或 Libreoffice Calc 中,可以用資料畫次數分配長條圖(Frequency Distribution Chart);那在 PostgreSQL 要怎麼用 SQL 語法達成?
MathJax
MathJax-2
MathJax-3
Google Code Prettify
置頂入手筆記
EnterproseDB Quickstart — 快速入門筆記
由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:
2017年7月10日 星期一
2017年7月4日 星期二
在 PostgreSQL 裡面產生樞紐分析表
樞紐分析表(Pivot Table)是什麼?在 Excel 裡面有提供這樣的東西,看似是被廣泛的使用的基本工具。
依照維基百科的說明,樞紐分析表是一種用來呈現資料性質總結(如計數,加總,平均或其他 Aggregation )的工具。
而一個樞紐表包含三個部份:
對應到關聯式表格的結構。樞紐表把兩欄用「品項」當成資料內容的關聯式表格欄位,挑出相異品項的清單,當作樞紐表的 X/Y 欄位陳列的「標籤」(例如,可以用 enum 型態來列舉資料內容的欄位,或是紀錄每日的日期/月份的欄位,都可以當成樞紐表 X/Y 軸的標籤);而中間的內容,就是對照 (X, Y) 值當成條件的 Aggregation 結果。
要從關聯式表格產生樞紐分析表,便要組織 SQL 查詢,呈現結果,再使用樞紐表組織工具處理
以上的關係搞清楚之後,樞紐表能不能用 PostgreSQL 資料庫的 SQL 語法完成?
依照維基百科的說明,樞紐分析表是一種用來呈現資料性質總結(如計數,加總,平均或其他 Aggregation )的工具。
而一個樞紐表包含三個部份:
- 垂直欄位:這個欄位中,包含相異的品項。作為樞紐表的 Y 軸
- 水平欄位:和垂直欄位一樣,也包含相異的品項,但內容會挑跟垂直欄位不相同的項目來用。作為樞紐表的 X 軸
- X/Y 張開的表格之間:為要呈現的總結資訊。也就是,固定 (X, Y) 條件下,所得的 Aggregation 資訊(例如,固定 (X,Y) 條件後的資料筆數,或是固定 (X, Y) 條件下,其他欄位資料的平均值)
- (選擇性)對 X 軸 / Y 軸作小計
對應到關聯式表格的結構。樞紐表把兩欄用「品項」當成資料內容的關聯式表格欄位,挑出相異品項的清單,當作樞紐表的 X/Y 欄位陳列的「標籤」(例如,可以用 enum 型態來列舉資料內容的欄位,或是紀錄每日的日期/月份的欄位,都可以當成樞紐表 X/Y 軸的標籤);而中間的內容,就是對照 (X, Y) 值當成條件的 Aggregation 結果。
要從關聯式表格產生樞紐分析表,便要組織 SQL 查詢,呈現結果,再使用樞紐表組織工具處理
- 準備作為 X 軸的欄位資料
- 準備作為 Y 軸的欄位資料
- 準備用來作總結的資料
以上的關係搞清楚之後,樞紐表能不能用 PostgreSQL 資料庫的 SQL 語法完成?
2017年7月3日 星期一
cygwin 裡面安裝 python3-matplotlib 和 python3-scipy
在 Windows 裡面有一款類比一般 GNU/Linux 裡面 Shell 與相關工具的程式,叫做 Cygwin,是由 Red Hat 維護的。儘管 Windows 10 有提供 Linux Shell(Windows Subsystem for Linux),聽說可以裝 Debian 或 Ubuntu 的套件,不過我還是習慣用 Cygwin~(其實,我更習慣 Slackware~)
Cygwin 裡面已經有提供 OpenBLAS 與針對 OpenBLAS 編譯的 LAPACK 函式庫,可以用 CPU 處理多執行緒數值線性代數運算,以及針對這兩個東西編譯的 Python2/Python3 是值運算模組 Numpy。用這些就可以作數值運算了。
不過一般都會再裝 Scipy 和 Matplotlib 來用;要在 Cygwin 裡面用 Matplotlib 與 Scipy,就得用 setuptools 的 easy_install 或 pip 來裝;但是安裝過程有一些套件相依性要處理,也是有一點麻煩步驟的。
Cygwin 裡面已經有提供 OpenBLAS 與針對 OpenBLAS 編譯的 LAPACK 函式庫,可以用 CPU 處理多執行緒數值線性代數運算,以及針對這兩個東西編譯的 Python2/Python3 是值運算模組 Numpy。用這些就可以作數值運算了。
不過一般都會再裝 Scipy 和 Matplotlib 來用;要在 Cygwin 裡面用 Matplotlib 與 Scipy,就得用 setuptools 的 easy_install 或 pip 來裝;但是安裝過程有一些套件相依性要處理,也是有一點麻煩步驟的。
2017年6月14日 星期三
PostgreSQL 9.x 原生的 Partitioned Table 設置
第十版的 Postgres 將引進原生的 Partitioned Table 語法。所以要快點把舊的 Partitioned Table 設置筆記快快貼出來~~
當然,這些語法在 PGSQL 10 也還是能用的!此外,由於 PGSQL 10 雖然在 postgres_fdw 提供 Aggregation Pushdown,但針對 Partitioned Table 的外部小資料表(Foreign Partitions)還沒有 Aggregation Pushdown 的執行計畫,因此像這樣 DIY 的 Partitioned Table 在 PGSQL 10 還是有他的一點用途的~
最後提醒一下,EDB 的 Postgres 企業版也有針對 Oracle 相容的 Partitioned Table 語法;就目前(2017 年六月)的資料看來,企業版還是功能還是比較多一些。
當然,這些語法在 PGSQL 10 也還是能用的!此外,由於 PGSQL 10 雖然在 postgres_fdw 提供 Aggregation Pushdown,但針對 Partitioned Table 的外部小資料表(Foreign Partitions)還沒有 Aggregation Pushdown 的執行計畫,因此像這樣 DIY 的 Partitioned Table 在 PGSQL 10 還是有他的一點用途的~
最後提醒一下,EDB 的 Postgres 企業版也有針對 Oracle 相容的 Partitioned Table 語法;就目前(2017 年六月)的資料看來,企業版還是功能還是比較多一些。
2017年6月1日 星期四
在 Postgres 自訂 Aggregation 函數 — 把多筆字串併成同一列
Aggregation 函數,指的是一個或多個欄位的把多筆資料一起處理,映射成一個值的函數,例如加總 SUM() 或平均 AVG() 等函數。
除了內建的 Aggregation 之外,Postgres 提供自訂 Aggregation 的方式,可以自訂自己需要的條件的 Aggregation。
除了內建的 Aggregation 之外,Postgres 提供自訂 Aggregation 的方式,可以自訂自己需要的條件的 Aggregation。
2017年5月7日 星期日
在 Postgres 裡面的用 SELECT Query 回傳值更新多個欄位
這裡用 EDB 的範例資料(2.1.1 Sample Database | Database Compatibility for Oracle® Developer’s Guide for EDB Postgres™ Advanced Server 9.6),紀錄如在 Postgres 裡面用一個 SELECT 的回傳的一筆結果,用來更新其他地方的資料。
2017年5月2日 星期二
訂閱:
文章 (Atom)