ホームページ  >  に質問  >  本文

テーブル内の最大値を見つけて、SQL グループを個別に表示し、各 SQL グループの最大値の数を表示します

rree

つまり、これが私のテーブル SERVICE です。(ご覧のとおり) 最大経験値は 100 です。 位置 (左、右、上、下) ごとに形成されたグループごとに、経験値 100 の出現回数を見つけるクエリを作成する必要があります。

だから私はこう書きました:-

リーリー

期待される出力: -

リーリー ###しかし、 エラーが発生しました: - 「GROUP BY 式ではありません」

私のロジックでは、最初にグループをいくつかのグループに分割し、その後、having 句を使用して、経験値が最大値に等しい各グループ内のタプルを計算します。経験。

P粉451614834P粉451614834190日前374

全員に返信(2)返信します

  • P粉718730956

    P粉7187309562024-03-31 14:00:05

    1 つの方法は、最大値のみを返すサブクエリで左結合を使用することです。任意の最大値を持つグループを返すにはケースが必要です。

    リーリー

    https://dbfiddle.uk/-8pHZ8wm

    わかりやすくするために、以下のクエリを実行すると、値 100 を除くサービス テーブルのすべての行で max_ experience が空であることがわかります。簡単に言うと、グループ内の値が 100 と 0 で、まだ最大経験値に達していない行をカウントするだけで済みます。

    リーリー

    https://dbfiddle.uk/al8YYLk9

    ######編集###。答えはOracleでも機能しますが、サブクエリの後のキーワード

    asを削除する必要があります。 リーリー https://dbfiddle.uk/hhGB_xXx

    返事
    0
  • P粉936568533

    P粉9365685332024-03-31 09:12:10

    を使用して合計:

    リーリー

    ヴァイオリンを参照。

    返事
    0
  • キャンセル返事