简体   繁体   English

如何按SELECT查询中两个SUM / COUNT之比进行排序?

[英]How to ORDER by the ratio of two SUM/COUNTs in a SELECT query?

In a SELECT query as SELECT查询中

SELECT 
category_id, 
COUNT(*) AS Total, 
SUM(IF(year=2016,1,0) AS year2016, 
SUM(IF(year=2015,1,0) AS year2015
FROM articles
GROUP BY category_id

How can I ORDER BY the ratio of year2016/year2015 ? 我怎样才能ORDER BY的比例year2016/year2015

Moving the SELECT statement into a sub-query will allow you to re-use the calculated SUM aggregates. SELECT语句移到子查询中将使您可以重新使用计算出的SUM聚合。 Casting to a DECIMAL will tell MySQL not to use integer division and to keep values to the right of the decimal point. 强制转换为DECIMAL将告诉MySQL不要使用整数除法,并且将值保持在小数点右边。

SELECT category_id, Total, year2016, year2015
FROM
  (SELECT 
    category_id, 
    COUNT(*) AS Total, 
    SUM(IF(year=2016,1,0)) AS year2016, 
    SUM(IF(year=2015,1,0)) AS year2015
  FROM articles
  GROUP BY category_id) AS t
ORDER BY CAST(year2016 AS DECIMAL(14,4)) / CAST(year2015 AS DECIMAL(14,4))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM