Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在SELECT查询中按两个总和/计数的比率排序?_Mysql_Select_Sql Order By - Fatal编程技术网

Mysql 如何在SELECT查询中按两个总和/计数的比率排序?

Mysql 如何在SELECT查询中按两个总和/计数的比率排序?,mysql,select,sql-order-by,Mysql,Select,Sql Order By,在中选择查询为 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 如何按2016年/2015年的比率排序?将SELECT语句移动到子查询中将允许您重新使用计算的总和。转换为十进制将告诉MySQL不要使用整数除法,并将值保留在小数点的右侧 SELECT c

中选择
查询为

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

如何按
2016年/2015年的比率
排序?

SELECT
语句移动到子查询中将允许您重新使用计算的
总和。转换为
十进制
将告诉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))
按金额排序(如果(年份=2016,1,0)/SUM(如果(年份=2015,1,0)说明