从我收集的内容
SELECT
people.id,
people.name,
COUNT(sales.sale) AS sale_count,
RANK() OVER (ORDER BY sale_rank DESC) AS sale_rank
FROM people
JOIN sales ON people.id = sales.people_id
GROUP BY people.id
ORDER BY sale_count DESC;
应该表示COUNT(sales.sale)
与sale_count
相同,但该示例仅在我使用时有效
RANK() OVER (ORDER BY COUNT(sales.sale) DESC) AS sale_rank
这是AS总是如何工作或者这可能是因为我正在做" SQL基础知识:简单的JOIN和RANK" Codewars上的kata?
答案 0 :(得分:0)
这就是SQL的工作原理。通常,SELECT
中定义的列别名不能在SELECT
(或WHERE
或FROM
子句中)中使用。
原因很简单:SQL不保证SELECT
中表达式的排序。因此,定义和使用可以是任何顺序。
注意:有些数据库允许窗口函数的列别名。显然,你没有使用其中之一。