3

Postgresql 9.2+のhaving句で集約関数の値を使用する方法はありますか?

monkey_idたとえば、2 番目に高いnumber> 123 と 2 番目に高い数値をそれぞれ取得したいと思います。以下の例では、(monkey_id 1, number 222) を取得したいと思います。

monkey_id | number
------------------
1         | 222
1         | 333
2         | 0
2         | 444

SELECT 
  monkey_id, 
  (array_agg(number ORDER BY number desc))[2] as second 
FROM monkey_numbers 
GROUP BY monkey_id
HAVING second > 123

私は得るcolumn "second" does not exist

4

1 に答える 1

4

それをhaving句に配置する必要があります

SELECT 
  monkey_id
FROM monkey_numbers 
GROUP BY monkey_id
HAVING array_agg(number ORDER BY number desc)[2] > 123

説明は、 が のhaving前に実行されるselectためsecond、その時点ではまだ存在しないということです。

于 2013-05-29T19:01:50.187 に答える