如何从 sql 中的先前列表值引用表达式?

how to reference an expression from the previous list value in sql?

所以我不确定我是否在标题中正确解释了我的问题,但我会尝试在这里说出来。假设您有一个像这样的 table

如何在单个查询中将成绩相加并创建一个新列来展示每行占总成绩的百分比,如下所示:

我试过

Select SUM( Grade) As total, Grade/total as Percent total

但好像不是这样的。我知道我显然可以做两个查询,一个查询总和,然后直接让它发生。谁能告诉我在单个查询中计算总百分比?

您可以将此查询与 returns 单行总和的查询交叉连接:

SELECT     t.*, 100 * t.grade / s.sum_grades AS "Percent Total"
FROM       mytable t
CROSS JOIN (SELECT SUM(grade) AS sum_grades
            FROM   mytable) s

您可以使用 window 函数。例如:

select *, 100 * grade / sum(grade) over() as percent_total from t