Подсчитывать данные столбца на основе группировок

#sql #sql-server

#sql #sql-сервер

Вопрос:

итак, у меня эта проблема. В моей базе данных есть две таблицы, которые выглядят примерно так:

     Table A:

    ============================
    Username     Group Number
    ============================
    mike              1
    john              1
    stan              2
    mark              2

    ============================


    Table B:

    ========================================
    Username     FeatureA  FeatureB FeatureC
    ----------------------------------------

    mike           Yes                Yes
    john                      Yes
    stan                      Yes     Yes
    mark           Yes                Yes
    ========================================
  

Таблицы A и B объединяются по имени пользователя, и мне нужно что-то, что выглядит следующим образом:

     ============================================
    Group Number  FeatureA   FeatureB   FeatureC
    ============================================

         1         1            1          1
         2         1            1          2
    ============================================
  

В принципе, мне нужно подсчитать количество пользователей в каждой группе, которые имеют доступ к каждой функции.

Комментарии:

1. FeatureX является ли текстовый тип столбцом?

Ответ №1:

Попробуйте это

 SELECT a.`Group Number`, 
       SUM(CASE b.FeatureA WHEN 'Yes' THEN 1 ELSE 0 END) AS FeatA, 
       SUM(CASE b.FeatureB WHEN 'Yes' THEN 1 ELSE 0 END) AS FeatB, 
       SUM(CASE b.FeatureC WHEN 'Yes' THEN 1 ELSE 0 END) AS FeatC 
FROM tableA a JOIN tableB b
ON a.username = b.username
GROUP BY a.`Group Number`
  

Комментарии:

1. Разве это не должно быть сгруппировано по group number ?

2. @PiotrAuguscik: это так… может быть, вы покрасили сообщение, пока я его редактировал 🙂