如何在 SELECT 查询中按两个 SUM/COUNTs 的比率进行排序?

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

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

如何才能ORDER BY达到year2016/year2015的比例?

SELECT 语句移动到子查询中将允许您重新使用计算的 SUM 聚合。强制转换为 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))