1

特定のユーザーのパーセンテージをタイプ (M または C) 別に表示したいのですが、次のクエリで試しました。

SELECT TYPE,user_name,pourcentage_c,pourcentage_m,id_user, 
       COUNT(TYPE) AS crtitique ,COUNT(TYPE) AS majeur
FROM stat_alert  
LEFT OUTER JOIN user_qdf  ON user_qdf.`id` = id_user   
WHERE user_qdf.`id`=id_user AND TYPE='C'
GROUP BY id_user 
UNION ALL
SELECT TYPE,user_name,pourcentage_c,pourcentage_m,id_user,
       COUNT(TYPE) AS crtitique,COUNT(TYPE) AS majeur 
FROM stat_alert  
LEFT OUTER JOIN user_qdf  ON user_qdf.`id` = id_user   
WHERE user_qdf.`id`=id_user AND TYPE='M'
GROUP BY id_user

1 人のユーザーのクリティカルと重要のパーセンテージと数を同じ行に表示したい

ここに画像の説明を入力

4

4 に答える 4

2

これに似たものを使用できるはずです (これは基本的にPIVOT関数です)。これにより、テーブルで a が 1 回実行JOINされます。次に、ステートメントuser_qdfで集計関数を適用して、異なる値ごとに ( を使用して)カウントを取得します。CASESUMTYPE

SELECT TYPE, 
  user_name, 
  pourcentage_c, 
  pourcentage_m,
  id_user,
  sum(case when TYPE ='C' then 1 else 0 end) AS crtitique,
  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
于 2012-11-05T11:44:44.703 に答える
0

これは機能するはずです(現在はテストできません)

SELECT TYPE,user_name,pourcentage_c,pourcentage_m,id_user,
    SUM(CASE user_qdf_c.TYPE WHEN 'C' 1 ELSE 0 END) AS crtitique,
    SUM(CASE user_qdf_m.TYPE WHEN 'M' 1 ELSE 0 END) AS majeur 
FROM stat_alert  
LEFT OUTER JOIN user_qdf user_qdf_c ON user_qdf_c.`id` = id_user AND TYPE='C'
LEFT OUTER JOIN user_qdf user_qdf_m ON user_qdf_m.`id` = id_user AND TYPE='M'
GROUP BY id_user

COUNTを使用するのではなく、SUMを使用するという考え方です。

編集これは、1つの左結合を使用するだけではるかにうまく書き直すことができます(これは、はるかに優れたパフォーマンスを意味します!)@SashiKantおよび@bluefeetのソリューションを参照してください。

于 2012-11-05T11:39:42.360 に答える
0

これを試して::

  SELECT 
 TYPE,
user_name,pourcentage_c,pourcentage_m,id_user,COUNT(TYPE) AS crtitique ,COUNT(TYPE) AS majeur 

FROM stat_alert LEFT OUTER JOIN user_qdf ON user_qdf.id = id_user and user_qdf.id = id_user TYPE='C'またはTYPE='M'GROUP BY id_user

于 2012-11-05T11:40:57.253 に答える
0

これを試して:

SELECT user_name, pourcentage_c, pourcentage_m, id_user,  
       COUNT(1) AS crtitique, COUNT(1) AS majeur
FROM stat_alert  
LEFT OUTER JOIN user_qdf ON user_qdf.id = id_user  
GROUP BY id_user, TYPE 
于 2012-11-05T12:01:48.007 に答える