开发者

wrong count in query

开发者 https://www.devze.com 2023-02-17 08:48 出处:网络
I have a table whose structure is as follows: idint useridint statusenum (\'pending\',\'approved\') dopdatetime

I have a table whose structure is as follows:

id  int
userid  int
status  enum ('pending','approved')
dop     datetime

Data is as:

id          userid               status             dop
 1            24                 pending       开发者_开发知识库     2011-02-14 06:41:32
 2            24                 pending            2011-02-15 23:02:45

When I fire the following query:

SELECT count( userid )
FROM t1
WHERE STATUS = 'pending'
GROUP BY userid

It's giving me count as '2', which is wrong, can anyone tell me what's wrong here? and how to get real count as 1


The group by statement is executed after the count. Use this instead:

SELECT count( DISTINCT userid )
FROM t1
WHERE STATUS = 'pending'


Do you want to count the number of user with status pending then?

SELECT count(userid)
FROM t1
WHERE STATUS = 'pending'
GROUP BY status, userid


Try to add the userid in the select clause :

SELECT userid, count( userid )
FROM t1
WHERE STATUS = 'pending'
GROUP BY userid


Maybe adding DISTINCT() on userid?


SELECT count( DISTINCT userid )
FROM t1
WHERE STATUS = 'pending'
GROUP BY userid


You sould use the COUNT(DISTINCT()) construction, it allow you to count the diferent values not NULL (docu)

Try this sentence:

SELECT count( DISTINCT( userid ) )
FROM t1
WHERE STATUS = 'pending'
GROUP BY userid

HTH!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号