簡體   English   中英

同一列上的多個計數與哪里 - MySQL

[英]Multiple Count On Same Column with Where like - MySQL

我試圖在同一列上對不同的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%';

我確信它可能,我只是不知道該怎么做。 任何幫助,將不勝感激。

提前致謝

更新:

結束了為我工作

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

注意:如果沒有外卡,我不會費心使用“贊”

您可以使用SUM / CASE的組合來實現所需的結果,如答案https://stackoverflow.com/a/8870028/625594

對於您的情況,確切的查詢將是:

select system_user, 
SUM(CASE WHEN details like 'Viewed' THEN 1 ELSE 0) AS `sum1`,  
SUM(CASE WHEN details like 'Viewed Web%' THEN 1 ELSE 0) AS `sum2`,
SUM(CASE WHEN details like 'ThumbView' THEN 1 ELSE 0) AS `sum3`,
SUM(CASE WHEN details like 'Exported%' THEN 1 ELSE 0) AS `sum4`
from asset_log;

你可以像這樣寫:

SELECT MAX(system_user) AS system_user, COUNT(*)
  FROM asset_log
  WHERE details = 'Viewed'
  OR details like 'Viewed Web%'
  OR details = 'ThumbView'
  OR details like 'Exported%'

由於system_user可能都是相同的,因此MAX()將隨機獲得一個,並且它解決了無法將聚合列與非聚合列組合的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM