如何计算别名列上的聚合函数SUM?
SELECT a.question_id,
a.level,
Count(a.question_id) AS rank,
Sum(rank) AS total
FROM logs AS a,
question AS b
WHERE a.question_id = b.q_id
AND a.level = '2'
GROUP BY a.question_id
ORDER BY rank DESC
Run Code Online (Sandbox Code Playgroud)
zes*_*ssx 14
只需使用(SELECT别名)包装重用的别名:
SELECT a.question_id,
a.level,
COUNT(a.question_id) AS rank,
SUM(SELECT(rank)) AS total
FROM logs AS a,
question AS b
WHERE a.question_id = b.q_id
AND a.level = '2'
GROUP BY a.question_id
ORDER BY rank DESC
Run Code Online (Sandbox Code Playgroud)
SQL的作用域规则不允许您在同一个中使用别名select.虽然这似乎不合理,但它是为了防止混淆,例如:
select 2*x as x, x+1
Run Code Online (Sandbox Code Playgroud)
x第二个变量是指哪个?
您可以使用子查询来解决此问题:
select t.*, Sum(rank) AS total
from (SELECT a.question_id, a.level, Count(a.question_id) AS rank,
FROM logs AS a join
question AS b
on a.question_id = b.q_id
WHERE a.level = '2'
GROUP BY a.question_id
) t
ORDER BY rank DESC
Run Code Online (Sandbox Code Playgroud)
我还修复了你的连接语法.使用逗号来表示条款中的cross join限制where是相当过时的.
| 归档时间: |
|
| 查看次数: |
25529 次 |
| 最近记录: |