同一列上的多个计数与哪里 - MySQL

rre*_*ves 3 mysql count

我试图在同一列上对不同的where子句进行多次计数.

我已经找出了每个like子句的基本查询,但是我需要将它们组合起来产生一个结果.

select system_user, COUNT(details) from asset_log where details like 'Viewed';
select system_user, COUNT(details) from asset_log where details like 'Viewed Web%';
select system_user, COUNT(details) from asset_log where details like 'ThumbView';
select system_user, COUNT(details) from asset_log where details like 'Exported%';
Run Code Online (Sandbox Code Playgroud)

我确信它可能,我只是不知道该怎么做.任何帮助,将不胜感激.

提前致谢

更新:

结束了为我工作

select distinct system_user, 
    SUM(CASE WHEN details ='viewed' then 1 Else 0 end) AS viewed_count,
    SUM(CASE WHEN details Like 'Viewed Web%' then 1 Else 0 end) AS Web_count,
    SUM(CASE WHEN details = 'ThumbView' then 1 Else 0 end) AS ThumbView_count,
    SUM(CASE WHEN details Like 'Exported%' then 1 Else 0 end) AS Exported_count
from asset_log GROUP BY system_user; 
Run Code Online (Sandbox Code Playgroud)

谢谢!

Con*_*rix 5

您可以使用SUM/Case来"转动"计数

select system_user, 

    SUM(CASE WHEN details ='viewed' then 1 Else 0 end) viewed_count
    SUM(CASE WHEN details Like 'Viewed Web%' then 1 Else 0 end) Viewed Web_count
    SUM(CASE WHEN details = 'ThumbView' then 1 Else 0 end) ThumbView_count
    SUM(CASE WHEN details Like 'Exported%' then 1 Else 0 end) Exported_count
from asset_log 
where 
    details = 'viewed' or
    details like 'Viewed Web%' or
    details = 'ThumbView' or
    details like 'Exported%' 
 group by 
      system_user
Run Code Online (Sandbox Code Playgroud)

注意:如果没有外卡,我不会费心使用"赞"