case when then 和count的问题

select r.app_id from ms_tms_mini_app_record r ,
ms_tms_mini_app a
where r.app_id = a.mini_app_id
order by (case :sort
when '1' then count(a.mini_app_id )
when '2' then timestamp
end ) desc ;
想通过输入不同的sort进行不同的排序,1为出现次数,2为时间
现在语句会报错。
想问一下在case when then后面不能添加聚合函数吗,如果不能有没有其他的写法。

聚合函数一般是搭配分组使用的,如果没有分组,那么就只能保留聚合函数,其他类似id这样的无法聚合的字段是不能同时使用的

另外就是,order 排序,排序字段优先是按照逗号分隔的, order by field1,field2 desc,就是优先字段1升序,字段1相同,字段2降序排列,不可能对不同类型的字段做同一种排序规则

用子查询,你提供的信息不够,下面的sql你自己改下吧

select * from (
select case ...when....end case_field,  r.app_id from ms_tms_mini_app_record r ,
ms_tms_mini_app a
where r.app_id = a.mini_app_id
) x
order by case_field desc