mysql - 同一列上的多个计数与 Where like - MySQL

标签 mysql count

我正在尝试使用不同的 where like 子句对同一列进行多次计数。

我已经为每个 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%';

我确定这是可能的,我只是不知道该怎么做。任何帮助将不胜感激。

提前致谢

更新:

这对我有用

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; 

谢谢!

最佳答案

您可以使用 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

注意:如果没有通配符,我不会费心使用“喜欢”

关于mysql - 同一列上的多个计数与 Where like - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931528/

相关文章:

mysql - 根据唯一键之间的比较选择另一列的最新值

R计算相似行数据帧的出现

php - 在 PDO 中使用 INSERT INTO ON DUPLICATE KEY 绑定(bind)值

php 发生错误警告:mysqli::close(): 无法在 php 中获取 mysqli 错误

php - 如何在查询中使用数组中的数据

select - DataStax DevCenter 的 count(*) 问题

mysql - 计算相同和不同的值

Mysql统计用户的列数,并按修改日期分组

r - 基于具有重复行的两列计算唯一值,R 数据框

MySQL - Perl- Order by - 如何显示 ABS(PartNum) DESC 但是,三个不同的 (PartNum) 类别?