Sql按结果排序结果

时间:2017-07-28 03:05:17

标签: sql oracle

使用的数据库 - Oracle

create table customer_exercise(
customer_id number,
exercise_id number,
cnt number,
exercise_date date)

表格数据

1000    10  3   17-DEC-15
1001    20  6   19-DEC-15
1000    20  2   20-DEC-15
1003    20  9   20-DEC-15
1000    20  6   22-DEC-15
1000    30  10  23-DEC-15
1001    10  25  10-DEC-15

是否可以使用sql获取结果,使得exercise_id 20的sum(cnt)首先出现在结果集中?

select customer_id , exercise_id, sum(cnt) from customer_exercise 
where customer_id in (1000, 1001, 1003) and exercise_id in (20)
group by customer_id, exercise_id order by sum(cnt)

1001    20  6
1000    20  8
1003    20  9


select customer_id , exercise_id, sum(cnt) from customer_exercise 
where customer_id in (1000, 1001, 1003) and exercise_id not in (20)
group by customer_id, exercise_id order by sum(cnt)

1000    10  3
1000    30  10
1001    10  25

我要做的是将上述两个查询的结果与一个sql合并。是否可以编写一个sql来获取结果集,如下所示?

1001    20  6
1000    20  8
1003    20  9
1000    10  3
1000    30  10
1001    10  25

1 个答案:

答案 0 :(得分:1)

我认为那会是:

select customer_id , exercise_id, sum(cnt)
from customer_exercise 
where customer_id in (1000, 1001, 1003) 
group by customer_id, exercise_id
order by (case when exercise_id in (20) then 1 else 2 end), sum(cnt)