2015-02-12 116 views
0

我使用PostgreSQL的,我有表近100萬行:如何計算SQL中的四分位數?

CREATE TABLE Data(
    id varchar(8) PRIMARY KEY, 
    jan INT, 
    feb INT, 
    mar INT, 
    apr INT, 
    may INT, 
    jun INT, 
    jul INT, 
    aug INT, 
    sep INT, 
    oct INT, 
    nov INT, 
    dec INT); 

,我想拿到四分

例如:

ID jan feb mar apr may jun jul aug sep oct nov dec 
A10 1 2 3 4 5 6 7 8 9 10 11 12 

我要輸出爲:

ID Q1 Q2 Q3 Q4 
A10 3 6 9 12 

我該如何在postgresql中做到這一點?

+0

你可以用['CASE - WHEN']這樣做( http://www.postgresql.org/docs/8.4/static/functions-conditional.html)。 – 2015-02-12 05:56:34

+0

嗨,歡迎來到Stack Overflow。在這裏,我們很樂意爲您提供幫助 - 但您最好先谷歌瀏覽一下,然後讓自己先嚐試一下,然後向我們展示您嘗試的內容(即使它已經損壞),然後我們可以幫助您解決問題不工作的位。例如在這裏,我會谷歌像「SQL年度季度」或類似的東西。 – 2015-02-12 06:05:09

+0

請按照(根據定義)只能生成3 [四分位數](http://en.wikipedia.org/wiki/Quartile);你可能需要別的東西。 (從你的例子看來,你需要每個季節的最大月份值,是嗎?) – pozs 2015-02-12 09:16:05

回答

0

你可以只添加彌補宿舍列

select id 
, (case 
    when jan>feb and jan>mar then jan 
    when feb>jan and feb>mar then feb 
    else mar END 
     ) q1 
...Similarly for q2,q3,q4 
from table 
1

可能這會給你想要的結果:

Select id, 
     jan + feb + mar as Q1, 
     apr + may + jun as Q2, 
     jul + aug + sep as Q3, 
     oct + nov + dec as Q4, 
From Data