0

アラートの数と、ユーザーによって処理されたアラートの数と、タイプ タイプ = C および M をカウントしたいと思います。このクエリを開始すると、メジャー アラートとクリティカル アラートの数が正しく表示されますが、処理されたアラートの数がわかりません。

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 

誰が私を助けることができます

4

1 に答える 1

0

すべてのアラートの数が必要な場合、その 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 ではないと仮定します。

編集:alertesの合計について

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

EDIT2:

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

それはあなたが望むものですか?

于 2012-11-12T12:00:11.520 に答える