1. ホーム
  2. sql

[解決済み] count > 1のレコードを検索するSQLクエリ

2022-04-11 12:32:10

質問

という名前のテーブルがあります。 PAYMENT . このテーブルには、ユーザー ID、口座番号、郵便番号、および日付があります。私は同じアカウント番号で一日に複数の支払いをしているすべてのユーザーのすべてのレコードを見つけたいと思います。

UPDATEしてください。 さらに、郵便番号が異なるレコードのみをカウントするフィルタが必要です。

テーブルはこんな感じです。

| ユーザーID|アカウント番号|郵便番号|日付|の順で表示されます。
 
| 1|123|6666|12月|09日
| 1|123|55555|13|12|09|年|月|日
| 2|456|77777|14-12-09


| 2|789|77777|14-12-09||の

結果はこのような感じになるはずです。

| ユーザーID|カウント|」。
| 1 | 2 |

これをSQLクエリで表現するとどうなるのでしょうか?自己結合を考えていたのですが、なぜかカウントがおかしくなってしまいました。

どのように解決するのですか?

を使用します。 持っている 句を使用し、行を一意にするフィールドで GROUPBY します。

以下のように検索します。

同じ口座番号で1日に2回以上支払いをしているすべてのユーザー

SELECT 
 user_id ,
 COUNT(*) count
FROM 
 PAYMENT
GROUP BY
 account,
 user_id ,
 date
HAVING
COUNT(*) > 1

更新情報 もしZIPが明確なものだけを含めたいのであれば、まず明確なセットを取得してからHAVING/GROUP BYを実行すればよいでしょう。

 SELECT 
    user_id,
    account_no , 
    date,
        COUNT(*)
 FROM
    (SELECT DISTINCT
            user_id,
            account_no , 
            zip, 
            date
         FROM
            payment 
    
        ) 
        payment
 GROUP BY
    
    user_id,
    account_no , 
    
    date
HAVING COUNT(*) > 1