简体   繁体   中英

How to do two different count in one sql

How can do two different count in one table? The two different count functions count different columns.

Simplified Table:

id,creatorId,resolverId
'1','1','2'
'2','1','2'
'3','2','2'
'4','2','1'

What I want to do is putting the creatorId,COUNT(creatorId),resolverId,COUNT(resolverId) into one table. Like:

creatorId,COUNT(creatorId),resolverId,COUNT(resolverId)
'1','2','1','1'
'2','2','2','3'

I only passed the test of putting them in 2 columns by using UNION, and I tried JOIN but it is illegal to MySQL.

SELECT creatorId, COUNT(creatorId)
FROM issue AS a 
GROUP BY creatorId
join(
SELECT resolverId, COUNT(resolverId) 
FROM issue AS b
GROUP BY resolverId)
WHERE a.creatorId = b.resolverId;

The error info is:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'join( SELECT resolverId, COUNT(resolverId) FROM issue AS b GROUP BY resolverId)' at line 4 0.00034 sec

Can anyone tell me how to deal with it? or give me a example? Thank you!

you could jon this way

select  a.creatorId,COUNT(acreatorId), resolverId, count_resolved_id
from issue a
inner join (
  SELECT resolverId, COUNT(resolverId)  count_resolved_id
  FROM issue AS b
  GROUP BY resolverId
) t on t.resolverId = a.creatorId
group by a.creatorId,COUNT(acreatorId)
select  a.creatorId,COUNT(a.creatorId), t.resolverId, count_resolved_id
from issue a
inner join (
  SELECT b.resolverId, COUNT(b.resolverId)  count_resolved_id
  FROM issue AS b
  GROUP BY resolverId
) t on t.resolverId = a.creatorId
group by a.creatorId;

If I understand correctly, then one way of doing this is an aggregation after a union all :

select id, sum(creator) as creator_cnt, sum(resolver) as resolver_cnt
from ((select creator_id as id, 1 as creator, 0 as resolver
       from issue
      ) union all
      (select resolver_id as id, 0 as creator, 1 as resolver
       from issue
      )
     ) cr
group by id;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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