我有一個PG數據庫表價格。結構如下:Postgres:排序非零ASC加零和NULLS LAST
id name total_sales created_at
1 A 0.0 2016-01-01
2 B 1.25 2016-01-01
3 C 8.17 2016-01-01
4 D 15.09 2016-01-01
5 E 0.0 2016-01-01
6 F NULL 2016-01-01
7 G 2.25 2016-01-01
8 H 19.34 2016-01-01
9 I 47.91 2016-01-01
10 J 0.0 2016-01-01
11 K NULL 2016-01-01
12 L 0.01 2016-01-01
13 M 5.11 2016-01-01
14 N 27.53 2016-01-01
15 O 3.53 2016-01-01
我需要的是非常簡單的。我想訂購的記錄,從而使:
項目升序排列值> 0.0至上其次 項目0.0,然後NULLS LAST
總之,我需要的O/p在下面的序列:
1st: 12 => 0.01
2nd: 2 => 1.25,
3rd: 7 => 2.25,
4th: 15 => 3.53,
5th: 13 => 5.11,
6th: 3 => 8.17,
7th: 4 => 15.09,
8th: 8 => 19.34,
9th: 14 => 27.53,
10th: 9 => 47.91,
11th, 12th, 13th all 0.0
14th, 15th all NULLS
所以,我試過以下的SQL,但沒有工作!
SELECT * FROM prices
ORDER BY CASE WHEN total_sales = 0.0 THEN 0 ELSE total_sales END ASC NULLS LAST
哇!我認爲這隻能通過Switch案例來實現。但是你提供的解決方案是整潔,清晰並且達到標準的!最佳答案 –
它的簡潔但不直觀,這可能是一個維護問題。如果使用邏輯路標。 –