[英]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.