PostgresのMAX()値と一致する行の数を取得する

私は、「週」と呼ばれる列を持つ「ゲーム」という表を持っています。私は '週'の最大値を持つテーブル内のいくつの行がいくつあるのかと一緒に '週'の最大値を与える単一のクエリを見つけることを試みています。私は2つのクエリに分割することができます:

SELECT MAX(week) FROM games
// store value in a variable $maxWeek
SELECT COUNT(1) FROM games WHERE week = $maxWeek
// store that result in a variable

これを1つのクエリですべて実行する方法はありますか?

1

1 答え

SELECT week, count(*) FROM games GROUP BY week またはDER BY week DESC LIMIT 1;

または

SELECT week, count(*) FROM games WHERE week = (SELECT max(week) FROM games) GROUP BY week;

(より速いかもしれない)

4
追加された
それはなぜでしょうか? ;-) 2番目の方が良ければ explain でチェックしましたか?ちょうど不思議です...
追加された 著者 Michael Krelin - hacker,
私は2番目のものと一緒に行きました。そして私はGROUP BYとORDERを使うことを考えましたが、それはうまくいくとは思わなかったのです。 :P
追加された 著者 GrumpyCanuck,