2017-01-19 6 views
1

私はcount、 'like'とgroup byを単一クエリで使用する方法は?

SELECT sum(case when name LIKE 'nick-1%' then 1 end) as Count, 
     name 
FROM dummytable 
GROUP BY CASE 
      WHEN name LIKE 'nick-1%' THEN 'nick' 
      WHEN name LIKE 'vicky-1%' THEN 'vicky' 
      ELSE NULL 
     END 
Name Count 
nick 10 
vicky 17 

ようなものが必要ニックはそれが ヴィッキーが、それは私がすることができカント私のクエリで「ヴィッキーの%」

のような名前が含まれている必要があり意味「ニック%」のような名前が含まれている必要があります意味します私はそれをグループに追加することはできません。私はそれのために同じような機能を使用しているので、私はそれをグループに追加することができません。

+0

:あなたがあなたの元SELECTが何をしようとしていたテーブル全体、上の条件付き集約を使用する場合は、次のクエリを使用することができますそれをグループに追加することはできますが、グループに追加することはできません。それは私のような機能を使用しているからです。 – Nick

+1

あなたのクエリは完全にわかりません。 'dummytable'のサンプルデータと期待される出力を見せてくれますか? –

答えて

0

あなたが持っている問題を解決するには、同じものあなたが現在だけでなく、あなたのSELECTであなたのGROUP BYに持って表現:あなたの元のクエリで

SELECT CASE WHEN name LIKE 'nick-1%' THEN 'nick' 
      WHEN name LIKE 'vicky-1%' THEN 'vicky' 
      ELSE NULL END AS Name, 
     COUNT(*) AS Count 
FROM dummytable 
GROUP BY CASE WHEN name LIKE 'nick-1%' THEN 'nick' 
       WHEN name LIKE 'vicky-1%' THEN 'vicky' 
       ELSE NULL END 

、あなたは集計の2種類を混合されました。それは私に尋ねる私は合計を使用しているため名前欄を表示することがカント私のクエリでは

SELECT 'nick' AS Name, SUM(CASE WHEN name LIKE 'nick-1%' THEN 1 ELSE 0 END) AS Count 
FROM dummytable 
UNION ALL 
SELECT 'vicky', SUM(CASE WHEN name LIKE 'vicky-1%' THEN 1 ELSE 0 END) 
FROM dummytable 
+0

これは問題を解決してくれてありがとう – Nick

関連する問題