对派生的SQL值执行算术运算

Mar*_*ios 8 mysql sql

我正在根据州的数据库做一些统计.我想输出状态的等级和它与其他状态相比的百分比(即状态X的值高于其他状态值的55%).

我正在尝试这样的事情:

SELECT 
  count(*) AS TotalStates, 
  (SELECT COUNT(*) FROM states) AS NumberStates,
  (TotalStates/NumStates) AS percentage 
FROM states 
WHERE CRITERIA > 7.5
Run Code Online (Sandbox Code Playgroud)

我收到一个SQL错误,TotalStates(我的派生值)找不到.如何通过一个查询返回所有这三个值?

And*_*y M 9

您可以将主要计算放在子选择中,然后引用外部查询中的别名列,以便拉取已计算的值并从中获取另一个:

SELECT
  TotalStates,
  NumberStates,
  TotalStates / NumberStates AS percentage
FROM (
  SELECT 
    COUNT(*) AS TotalStates, 
    (SELECT COUNT(*) FROM states) AS NumberStates
  FROM states 
  WHERE CRITERIA > 7.5
) s
Run Code Online (Sandbox Code Playgroud)