2017-11-25 17 views
0

我有一個簡單的數據在我的PostgreSQL數據庫9.5類似如下:PostgreSQL:如何根據臨界值分割範圍?

id c_value start_r end_r m_value 
1  171  61  201  19.3 
2  89  59  119  22.1 
3  47  137  227  18.9 
3  47  227  287  0.0 
3  47  287  347  27.1 
3  47  347  47  6.5 
4  65  120  150  14.1 

柱解釋:Id (integer)而不是唯一的。 C_value (integer)是關鍵的價值。 start_r (integer)end_r (integer)是範圍的開始和結束值,而m_value (numeric)是平均值。

對於每一行,我只需要根據c_value修改start_rend_r。也就是說,如果遇到臨界值,我需要將範圍分割成片,否則輸出將相同。預期結果如下:

id c_value start_r end_r m_value 
1  171  61  171  19.3 
1  171  171  201  19.3 
2  89  59  89  22.1 
2  89  89  119  22.1 
3  47  137  227  18.9 
3  47  227  287  0.0 
3  47  287  347  27.1 
3  47  347  47  6.5 
4  65  120  150  14.1 

有人可以建議我如何根據臨界值來分割範圍?

+0

提示:LEAST(),GREATEST(),UNION ALL – wildplasser

回答

2

一種方法是一個簡單的union all

​​