2017-11-25 112 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

​​