为什么我不能按照下面的方法做,最好的选择是什么?
SELECT year,
category,
name,
COUNT() OVER (PARTITION BY name) AS count
FROM nobel_prizes
WHERE count = 2
ORDER BY count DESC
我得到:
(sqlite3.OperationalError) 误用别名窗口函数 count
如果我过滤聚合函数的列值以外的其他内容,它就会起作用。有人可以举个例子来说明为什么他们可能禁止后者吗?会允许不好的事情发生吗?
这发生在使用 ipython-sql 的 jupyter 笔记本中。
注意:我见过有关在 WHERE 子句中使用窗口函数的问题,但没有看到相反的问题。
我是 SQL 新手,请多多指教!
标准 SQL 不允许在
WHERE
子句中引用列别名。施加此限制是因为当评估 WHERE
子句时,列值可能尚未确定。
您也可以按照以下方式进行操作:
SELECT *
FROM (
SELECT year,
category,
name,
count() OVER (PARTITION by name) AS count
FROM nobel_prizes
)
WHERE count = 2
ORDER BY count DESC