【问题标题】:I want to order by table with below two qualities我想按以下两种品质按表订购
【发布时间】:2020-07-18 17:23:31
【问题描述】:

以上是我的查询得到的结果

• 输出应按两种不同的质量排序 o 首先,按非空数降序排列 o 第二,按排名总和,按升序排列

上图是结果的样子

使用的服务器:Mysql

这是我的查询,到目前为止我尝试过的任何帮助都非常感谢

select 
    snippettitle as category
    , if(cntrank>limitnumber,null,cntrank) as counts
    ,if(viewrank>limitnumber,null,viewrank) as views
    , if(likesrank>limitnumber,null,likesrank) likes
    , if(dislikesrank>limitnumber,null,dislikesrank) dislikes
    ,if(commentrank>limitnumber,null,commentrank) comment_count 
from ( select 
            snippettitle 
            ,RANK() OVER (ORDER BY cnt DESC) AS cntrank 
            ,RANK() OVER (ORDER BY views DESC) AS viewrank 
            ,RANK() OVER (ORDER BY likes DESC) AS likesrank 
            ,RANK() OVER (ORDER BY dislikes DESC) AS dislikesrank 
            ,RANK() OVER (ORDER BY comment_count DESC) AS commentrank 
        from homework7a) tmp 
        where 
            (cntrank <= limitnumber 
            || viewrank <= limitnumber 
            || likesrank <= limitnumber 
            || dislikesrank <= limitnumber 
            || commentrank <= limitnumber
    ) 
order by counts desc,views desc,likes desc ,dislikes desc,comment_count desc;

【问题讨论】:

  • 请不要将数据添加为图像,仅添加为文本
  • 请参阅:meta.stackoverflow.com/questions/285551/… 将文本数据发布为 images 是一种不好的形式,虽然这对您来说可能真的很容易,但对于任何可能想要提供帮助的人来说都变得更加困难你。

标签: mysql sql mariadb sql-order-by mysql-workbench


【解决方案1】:

你的第一个条件:

按非空排名的数量降序排列

可以简化为:

按null排名的个数升序

所以我相信你想要这个:

select *
from yourquery
order by 
  (counts is null) + (views is null) + (likes is null) + (dislikes is null) + (comment_count is null), 
  coalesce(counts, 0) + coalesce(views, 0) + coalesce(likes, 0) + coalesce(dislikes, 0) + coalesce(comment_count, 0)

【讨论】:

  • 对于第二种情况,我自己找到了一个解决方案,我将在此处发布以防有人需要帮助
  • select * from yourquery order by (counts is null) + (views is null) + (likes is null) + (dislikes is null) + (comment_count is null), COALESCE(counts,0) + COALESCE(views,0)+ COALESCE(dislikes,0)+ COALESCE(comment_count,0)+ COALESCE(likes,0) ;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多