どの月に最も多くのエントリがあるかを特定する必要があります。 IVEはTO_DATE関数を使用して日付列をMONTHにフォーマットしました。また、SELECT COUNT(*)をGROUP BY句と組み合わせて使用すると、すべてのレコードの月とカウントの属性を返すことができます。SQLPLUS(Oracle) - GROUPBYの最大数を取得
しかし、私はCOUNTのMAXである1つの行だけを返すことができる必要があります。 IVEはHAVING節を追加することを試みましたが、エラーを返します。私はどこかでここにサブクエリが必要だと思うが、それについてどうやって行くのか分からない。
SELECT TO_CHAR(P.DATEREGISTERED,'MONTH') MONTH, COUNT(*) COUNT
FROM PET P
GROUP BY TO_CHAR(P.DATEREGISTERED,'MONTH')
HAVING COUNT = MAX(COUNT);
別の試み:
SELECT TO_CHAR(P.DATEREGISTERED,'MONTH') MONTH, COUNT(*) COUNT
FROM PET P
GROUP BY TO_CHAR(P.DATEREGISTERED,'MONTH')
HAVING COUNT(*) = (SELECT MAX(TO_CHAR(P.DATEREGISTERED,'MONTH')) FROM PET P);
いいえ、毎月のカウント数が異なる場合にのみ動作します。 OTOHの場合、cableloadによる答えは常に1行しか返されず、1つのテーブル参照だけがはるかに効率的でなければなりません。 – symcbean