I can get the rank alias with this query:
SELECT *, 
  RANK() OVER (PARTITION BY some_field ORDER BY value) AS rk
FROM my_table
Result:
| some_field | value | rk | 
|---|---|---|
| same | 10 | 1 | 
| same | 20 | 2 | 
| same | 30 | 3 | 
And I tried to query with:
SELECT *, 
  RANK() OVER (PARTITION BY some_field ORDER BY value) AS rk
FROM my_table
WHERE rk = 1
I got this error message
column "rk" does not exist
If I tried a subquery, it works :
SELECT *
FROM (
  SELECT *,
    RANK() OVER (PARTITION BY some_field ORDER BY value) AS rk
  FROM my_table
) AS t
WHERE rk = 1
Result:
| some_field | value | rk | 
|---|---|---|
| same | 10 | 1 | 
But my question is why can't we use just one SELECT to do so.
Is it because I use a function in my query?
 
     
    