繁体   English   中英

按查询SQL分组

[英]Group by query sql

我想计算警报的数量以及用户和类型类型= C和MI处理的警报的数量,从此查询开始,它可以向我提供主要警报和严重警报的数量,但是我对处理的警报数量感到困惑

SELECT 
  TYPE,
  user_name,
  COUNT(type_alertes) AS nb, 
  id_user,
  SUM(CASE WHEN TYPE ='C' THEN 1 ELSE 0 END) AS critique,
  SUM(CASE WHEN TYPE ='M' THEN 1 ELSE 0 END) AS majeur 
FROM stat_alert  
 LEFT OUTER JOIN user_qdf ON user_qdf.`id` = id_user 
WHERE 
  user_qdf.`id`=id_user 
  AND TYPE IN ('M', 'C')
GROUP BY id_user 

谁能帮我

如果要获取所有警报的数量,并从C的数量和M的数量中选择

SELECT 
  user_name,
  COUNT(type_alertes) AS nb, 
  id_user,
  SUM(CASE WHEN TYPE ='C' THEN 1 ELSE 0 END) AS critique,
  SUM(CASE WHEN TYPE ='M' THEN 1 ELSE 0 END) AS majeur 
FROM stat_alert  
 JOIN user_qdf ON user_qdf.`id` = id_user 
GROUP BY id_user, user_name 

应该这样做。 我假设user_name来自user_qdf表,其他来自stat_alert,并且id_user不为null。

编辑:对于警报总和

SELECT 
  user_name,
  COUNT(type_alertes) AS nb, 
  id_user,
  SUM(CASE WHEN TYPE ='C' THEN 1 ELSE 0 END) AS critique,
  SUM(CASE WHEN TYPE ='M' THEN 1 ELSE 0 END) AS majeur 
  SUM(CASE WHEN TYPE ='M' OR TYPE = 'C' THEN 1 ELSE 0 END) AS both_c_and_m
FROM stat_alert  
 JOIN user_qdf ON user_qdf.`id` = id_user 
GROUP BY id_user, user_name

编辑2:

SELECT 
  user_name,
  COUNT(type_alertes) AS nb, 
  SUM(CASE WHEN TYPE ='C' THEN type_alertes ELSE 0 END) AS critique_alerts,
  SUM(CASE WHEN TYPE ='M' THEN type_alertes ELSE 0 END) AS majeur_alertes
  id_user,
  SUM(CASE WHEN TYPE ='C' THEN 1 ELSE 0 END) AS critique,
  SUM(CASE WHEN TYPE ='M' THEN 1 ELSE 0 END) AS majeur 
FROM stat_alert  
 JOIN user_qdf ON user_qdf.`id` = id_user 
WHERE TYPE in ('C','M')
GROUP BY id_user, user_name

那是你要的吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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