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

各ユーザーの最大の group_id を個別の値としてカウントします。

私の最新のプロジェクトには (少なくとも私にとっては) トリッキーなロジックがあり、それを解決するために HAVING を使用しようとしていますが、すべてのプレイで間違った結果が得られます。

ユーザーをユーザー グループに割り当てるリンク テーブルと、各グループのユーザー数を記録する別のテーブルがあるため、常にカウントする必要はありません (2 番目のテーブルは、ユーザー登録が時間から更新された後に実行されます)時間に)。

私が抱えている問題は、2 番目のテーブルの数値を更新する関数にあります。

リンクされたテーブルは次のようになります。これが私の問題を説明するサンプル データです:

リーリー

ユーザーは任意の数のグループに所属できます。実際、グループになるには、ユーザーはその下のすべてのグループに所属する必要があります。これは、各グループに特定の権限が割り当てられているためです。これを変更するには、現在のアプリケーションを大幅に書き直す必要があります。

私がやりたいのは、各ユーザーの最上位グループのみをカウントすることです。そのため、上記のデータ例では、ユーザー 1 はグループ 5 でのみカウントされ、グループ 1 は空のように見えます。

現在、すべてのエントリがカウントされます。つまり、グループ 4 に 3 人のユーザーがいる場合、その 3 人のユーザーはグループ 3、2、および 1 にもカウントされるため、私の数字は比較的無意味になります。

これまでに、いくつかのバリエーションを試してみました:

リーリー

これで同じ番号が得られます。それから私は試しました:

リーリー

しかし、今では理解していますが、私は他のグループに属していないユーザーにのみ質問しています。

正しい方向に進んでいるように感じますが、どこにどのような条件を設定すればよいのかわかりません。同様のフローのクエリの例をいくつか見てきましたが、エイリアスがすべて混乱を招くだけです。

誰かが私に正しい方向を教えてくれませんか?

P粉237125700P粉237125700277日前339

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

  • P粉431220279

    P粉4312202792024-01-17 13:39:13

    集計を使用して各ユーザーの最大 group_id を取得し、COUNT() ウィンドウ関数を使用して、返された各ユーザーの最大 group_id> 数をカウントできます。 :

    リーリー

    このクエリは、メンバーを持たないすべての group_id をフィルターで除外します。

    すべての group_id の結果が必要な場合は、テーブル groupsLEFT を使用して上記のクエリに接続します。 リーリー

    簡略化された

    デモをご覧ください。

    返事
    0
  • キャンセル返事