一个查询中有两个不同的计数

时间:2017-05-17 13:12:39

标签: mysql

我有一个网页,显示每个用户(名字)收到的请求,这些请求根据4个单独的查询分成4个列表中的1个,这些查询依赖于WHERE语句来检查'{{的值1}}'列(status incoming,)。

此解决方案适用于“已播放”列表。

playlisted, sidelisted, played

但是WHERE语句不允许它适用于其他3个列表中的请求。

要显示的4个列表中的每一个都需要两个计数

i)每个用户提出的请求总数。

ii)每个用户已经“播放”的请求数。

我使用JOINS和CASE语句的所有尝试都被WHERE语句所击败,该语句将计数限制在4个列表中的任何一个列表中。

2 个答案:

答案 0 :(得分:1)

删除WHERE语句并将状态条件放在COUNT:

SELECT
    t1.FirstName, 
    count(*) as totalCount, 
    count(IF(t1.status = 'played',1,null)) as playedCount
FROM
    RequestsTable t1
GROUP BY t1.FirstName;

答案 1 :(得分:0)

SELECT
    t1.FirstName, count(*) cnt ,0  played,0 played2 
FROM
    RequestsTable t1
GROUP BY t1.FirstName
union
SELECT
    t1.FirstName, 0 cnt ,count(*)  played,0 played2
FROM
    RequestsTable t1
    WHERE t1.status = 'played'
GROUP BY t1.FirstName
union
SELECT
    t1.FirstName, 0 cnt,0 played ,count(*)  played2
FROM
    RequestsTable t1
    WHERE t1.status = 'played2'
GROUP BY t1.FirstName

尝试以上查询。 希望这会有所帮助。