繁体   English   中英

选择“ COUNT”列和“ GROUP BY”

[英]Select COUNT of column and GROUP BY

这是我无法解决的问题。

我的问题是:

我需要选择一列的计数,但是我还需要在同一列上使用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

如您所见,单个user_id可以不止是Pending或Completed,但是我希望我的查询返回3 (基于上面的表格示例)。

因此,如果付款状态已完成,我希望查询到COUNT GROUPED user_ids。

有想法吗?

您可以使用DISTINCT关键字来选择唯一的用户ID,如下所示

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

听起来像您需要的是独特的计数。 扔掉组,然后尝试以下方法:

SELECT
  COUNT(DISTINCT user_id) AS total_donors
FROM
  mytable
WHERE
  payment_status = 'Completed'

对于结果3,将Count(user_id)替换为Count(distinct user_id)然后删除分组依据。

这样,您就可以得到付款状态为“已完成”的唯一user_id的计数。

因为您只对user_ID的数量感兴趣,所以不需要使用GROUP BY子句

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

当您尝试添加GROUP BY子句时。 结果与您期望的完全不同。

用这个:

SELECT COUNT(DISTINCT `user_id`) as `Total` FROM `Donation_Table`
WHERE `payment_status` = 'Completed'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM