我有以下價格範圍的行,$0-$50, $50-$100, $100-$500, $500+
定義爲varchar2列。我想按照上面給出的順序對值進行排序。任何人都可以建議我這樣做。排序在oracle查詢的價格範圍內
回答
你可以使用regexp_substr()
做你想做的事。然而,case
可能是最簡單的:
order by (case pricerange
when '$0-$50' then 1
when '$50-$100' then 2
when '$100-$500' then 3
when '$500+' then 4
else 999
end)
如果我使用這種情況,如何執行desc命令? – user525146
只需在表達式:'end)desc'後添加'desc'。 –
可以像這樣按順序使用'decode'和'regexp_substr()'?通過解碼命令(regexp_substr('1 asc nulls last','^(\ d)*') - 7),'-1','1 asc nulls last'(case pricerange when'$ 0- $ 50 'then 1 when'$ 50- $ 100'then 2 when'$ 100- $ 500'then 3 when'$ 500 +'then 4 else 999 end))'因爲它不適合我,所以排序失敗查詢 – user525146
也許你考慮到這樣的事情。 WIDTH_BUCKET(exp, min,max,buckets_cnt)
。該函數將exp分配給它的存儲桶。它會創建buckets_cnt + 2 以下示例創建5個存儲桶WIDTH_BUCKET(price,50,500,3)
。
(500-50)/3 = 150
0 - <50 less than min
1 - (50 : 200)
2 - (200 : 350)
3 - (350 : 500)
4 - 500> more than max
with prod_table as(select 'A' prod_name, 49 price from dual
union all
select 'B' prod_name, 100 price from dual
union all
select 'c' prod_name, 200 price from dual
union all
select 'd' prod_name, 300 price from dual
union all
select 'e' prod_name, 1000 price from dual)
SELECT prod_name, price,WIDTH_BUCKET(price,50,500,3) from prod_table order by WIDTH_BUCKET(price,50,500,3) desc
- 1. 排序鍵範圍查詢
- 2. Mysql ...價格範圍內的價格範圍?
- 3. 多列的價格範圍內的SQL查詢
- 4. Oracle範圍和子查詢
- 5. K排序的塊範圍查詢
- 6. 使用Zend Lucene排序範圍查詢
- 7. Oracle SQL中的排序範圍值
- 8. mysql價格範圍有或在範圍內
- 9. 範圍價格openerp
- 10. MongoDB的查詢結果排序(數字範圍查詢)
- 11. Oracle查詢中的時間戳範圍
- 12. Calcuate價格範圍在Javascript
- 13. 如何檢查是否一個價格範圍,包括在任何價格範圍內使用MySQL?
- 14. 選擇價格在查詢範圍之間
- 15. 在mongo的時間範圍內查詢
- 16. RaveDb/Lucene - 開始範圍爲零時,價格範圍查詢無效
- 17. Oracle SQL - 從日期範圍查詢中排除週末
- 18. 價格範圍查詢返回不準確的結果
- 19. 查詢中的Oracle價格計算
- 20. Oracle sql查詢以獲取IST日期範圍內的記錄
- 21. SQL查詢來插入和範圍內得到的價格長度
- 22. 獲取費用價格之間的價格範圍內啓動價格和endprice
- 23. 排序範圍
- 24. 期限和範圍內,在elasticsearch查詢
- 25. mongodb:在日期範圍內查詢
- 26. 查詢在給定範圍內
- 27. 在排序數組中查找範圍內屬性的項目?
- 28. 範圍查詢
- 29. 範圍價格計算
- 30. 標出價格範圍Schema.org
你可以提供你曾嘗試過什麼嗎? –
我不明白從哪裏開始以及如何去做。 – user525146
請提供表格結構,樣本數據和預期結果。猜測你想用'case'語句'命令'。 – sgeddes