2017-06-06 9 views
0
SELECT '2017-05-30' AS `short_date`, 
     'Stats' AS `group`, 
     'Active ' AS `subgroup`, 
     '' AS `row`, 
     CASE 
WHEN COUNT(DISTINCT(guild_name)) >= 1 AND COUNT(DISTINCT(guild_name)) <= 5 THEN '1 - 5 ' 
WHEN COUNT(DISTINCT(guild_name)) >= 6 AND COUNT(DISTINCT(guild_name)) <= 10 THEN '6 - 10 ' 
WHEN COUNT(DISTINCT(guild_name)) >= 11 AND COUNT(DISTINCT(guild_name)) <= 15 THEN '11 - 15 ' 
WHEN COUNT(DISTINCT(guild_name)) >= 16 AND COUNT(DISTINCT(guild_name)) <= 20 THEN '16 - 20 ' 
WHEN COUNT(DISTINCT(guild_name)) >= 21 AND COUNT(DISTINCT(guild_name)) <= 25 THEN '21 - 25 ' 
WHEN COUNT(DISTINCT(guild_name)) >= 30 THEN '> 30' END AS `value` 
FROM table 
WHERE guild_name !=0 
GROUP BY 
       `short_date`, 
       `group`, 
       `subgroup` 

それぞれの場合に値を数えないでください。大文字小文字の区別による合計機能の使用

+0

あなたの質問は、https://stackoverflow.com/questions/11754781/how-to-declare-a-variable-in-mysql –

+1

のように見えます。あなたは3つのGROUP BYフィールドの文字列を入力していますか?この問合せはすべて、別個のguild_namesのバケットを持つ1行です。後でこれを展開して複数の短期日、グループ、およびサブグループに対して実行する予定ですか? – ScottieB

+0

@ScottieBはい、そうです – Ekaterina

答えて

3

どのようにサブクエリに、カウントを移動し、このように外側ケースを移動について:

select `short_date`, `group`, `subgroup`, `row`, 
CASE 
    WHEN nb_guild >= 1 AND nb_guild <= 5 THEN '1 - 5 ' 
    WHEN nb_guild >= 6 AND nb_guild <= 10 THEN '6 - 10 ' 
    WHEN nb_guild >= 11 AND nb_guild <= 15 THEN '11 - 15 ' 
    WHEN nb_guild >= 16 AND nb_guild <= 20 THEN '16 - 20 ' 
    WHEN nb_guild >= 21 AND nb_guild <= 25 THEN '21 - 25 ' 
    WHEN nb_guild >= 30 THEN '> 30' 
END AS `value` 
from 
(
    SELECT '2017-05-30' AS `short_date`, 
      'Stats' AS `group`, 
      'Active ' AS `subgroup`, 
      '' AS `row`, 
      COUNT(DISTINCT(guild_name)) as nb_guild 
    FROM table 
    WHERE guild_name !=0 
    GROUP BY 
        `short_date`, 
        `group`, 
        `subgroup` 
) as subquery 

あなたの回数だけサブクエリに一度実行されます。この方法で、あなたの外側のクエリは、得られた結果セットにその治療を行います。

関連する問題