0

ここで私は自分で解決できない問題を抱えています。

私の問題は次のとおりです。

列の数を選択する必要がありますが、同じ列で GROUP BY も必要です。これまでに試したことは、期待どおりに返されません。

これが私が試したものです:

'SELECT COUNT(user_id) AS total_donors
    FROM ' . DONATION_SECURITY_TABLE .
    " WHERE payment_status = 'Completed' 
    GROUP BY user_id"

これは私のテーブルがどのように見えるかです:

id    user_id    payment_status
1     20         Completed
2     33         Completed
3     44         Completed
4     20         Pending
5     33         Pending
6     44         Completed
7     20         Completed

ご覧のとおり、1 つの user_id が Pending または Completed になる可能性は複数回ありますが、クエリで3を返すようにしたいと考えています(上記の表の例に基づく)。

そのため、支払いステータスが完了した場合、クエリで GROUPED user_ids をカウントしたいと考えています。

アイデア?

4

5 に答える 5

3

キーワードを使用しDISTINCTて一意のユーザー ID を選択できます。

"SELECT COUNT(DISTINCT user_id) AS total_donors
FROM " . DONATION_SECURITY_TABLE .
" WHERE payment_status = 'Completed' 
于 2012-09-30T14:48:48.407 に答える
2

個別のカウントが必要なようです。グループを捨てて、これを試してください:

SELECT
  COUNT(DISTINCT user_id) AS total_donors
FROM
  mytable
WHERE
  payment_status = 'Completed'
于 2012-09-30T14:49:04.497 に答える
2

Count(user_id)結果が 3 の場合、yourを withに置き換えCount(distinct user_id)、group by を削除します。

これにより、支払いステータスが完了した一意の user_id の数が得られます。

于 2012-09-30T15:07:37.367 に答える
1

のカウントのみに関心があるため、句user_IDを使用する必要はありませんGROUP BY

SELECT COUNT(DISTINCT user_ID)
FROM tableName
WHERE payment_status = 'completed'

GROUP BY句を追加しようとすると。結果は、期待したものとは大きく異なります。

于 2012-09-30T14:49:26.610 に答える
1

これを使って:

SELECT COUNT(DISTINCT `user_id`) as `Total` FROM `Donation_Table`
WHERE `payment_status` = 'Completed'
于 2012-09-30T14:50:00.577 に答える