我有一张这样的桌子
ID qty price
----------- ----- -----
1 0 5000
2 0 3000
3 3 1000
4 2 2000
我想显示如下结果:
ID qty price
----------- ----- -----
4 2 2000
3 3 1000
1 0 5000
2 0 3000
如上所示:
qty > 0
时:ORDER BY price DESC
之后:qty = 0
时:ORDER BY price DESC
。
有人可以帮我显示这样的结果吗?
答案 0 :(得分:7)
首先使用case
表达式对数量大于0的行进行排序。
然后按价格降序订购。 (将在数量> 0且数量= 0的组内进行排序。)
order by case when qty > 0 then 0 else 1 end, price desc
答案 1 :(得分:1)
如果我的理解正确,您可以尝试使用UNION ALL
进行分组,然后按顺序排序。
SELECT * FROM (
SELECT ID,qty,price,1 grp
FROM T
WHERE qty > 0
UNION ALL
SELECT ID,qty,price,2 grp
FROM T
WHERE qty = 0
)t1
order by grp,price DESC
答案 2 :(得分:1)
colnames(X)
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
mod$learner.model$feature_names
[1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width"
答案 3 :(得分:0)
您可以使用CASE
表达式
以及order by
之类的
ORDER BY
CASE WHEN qty>0 THEN price END desc,
CASE WHEN qty=0 THEN price END asc
答案 4 :(得分:0)
我们可以使用Case语句将两组划分,然后按
排序 select ID, qty, price from(
select ID,
qty,
price,
(case when qty > 0 then 1
else 0 end) as grp
from table1) T
order by GRP, price desc
答案 5 :(得分:0)
大多数SQL版本具有 au BufRead,BufNewFile *.xyz set filetype=c
au BufRead,BufNewFile *.xyz setfiletype c
函数。因此,如果您不想使用xyz.vim
,并且如果数量绝不为负,则可以执行以下操作:
sign()