【发布时间】:2017-03-22 13:06:34
【问题描述】:
在 postgresql 中我无法执行此代码
SELECT name, SUM(sws) as sws, SUM(sws) over (partition by sws) swsrange FROM professoren
JOIN vorlesungen on persnr = gelesenvon
group by name
order by sws desc
错误代码是这样的:
FEHLER:Spalte »vorlesungen.sws« muss in der GROUP-BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden LINE 1: SELECT name, SUM(sws) as sws, SUM(sws) over (partition by s...
这意味着他希望“sws”必须在 group by 或聚合函数中(实际上是)。
更新:
我改成
SELECT name, SUM(sws) as swscount, SUM(sws) over (partition by name) swsrange FROM professoren
JOIN vorlesungen on persnr = gelesenvon
group by name, sws
输出是:
奥古斯丁,2,2|康德,8,4|波普尔,2,2|罗素,2,5|罗素,6,5|苏格拉底,2,6|苏格拉底,8,6
但它应该像第一列是名字,第二列是他给出的所有课程的 sum(),第三列就像是一个拥有最多课程的排名:
苏格拉底,10,1|康德,8,2|罗素,8,2|奥古斯丁,2,3|波普尔,2,3
我在这里看不到问题。 感谢您的帮助。
【问题讨论】:
-
partition by sws- 您使用 sws 对其进行分区,因此它需要像“name”一样进行分组。或者更好地删除分组并按名称向窗口添加分区?.. -
你能写一些示例数据,突出显示你想要的输出吗? (请以文本形式写入示例数据 - 而不是图像)
-
@etsa 我更新了 sql 查询
标签: postgresql