SQL отличная группировка? - PullRequest
0 голосов
/ 13 ноября 2009

Вот мой запрос:

SELECT 
  dbo.EmailCampaignTracking.emailOpened,
  dbo.EmailCampaignTracking.emailUnsubscribed,
  dbo.EmailCampaignTracking.emailBounced,
  COUNT(*)
FROM
  dbo.EmailCampaignTracking
  Group By
  dbo.EmailCampaignTracking.emailBounced,
  dbo.EmailCampaignTracking.emailUnsubscribed,
  dbo.EmailCampaignTracking.emailOpened

Вот как выглядят мои результаты:

    emailOpened emailUnsubscribed emailBounced Totals

    True          False            False          6      
    False         False            True           1   
    True          True             False          2

Я бы хотел, чтобы общее количество открытых электронных писем было 8, а не 6. Я понимаю, что прошу SQL сгруппировать их таким образом. Я просто хочу знать, как я могу получить итоги Distict для каждого столбца. Таким образом, emailOpened будет 8, emailUnsubscribeed будет 1, а emailBounce будет 2. Спасибо

Ответы [ 2 ]

5 голосов
/ 13 ноября 2009
SELECT Count(emailOpened) AS OpenedCount,
Count(emailUnsubscribed) as UnsubCount,
Count(emailBounced) as BouncedCount
FROM dbo.EmailCampaignTracking

РЕДАКТИРОВАТЬ: Если вы хотите считать записи, когда флаг установлен, вы можете написать его, как показано ниже

SELECT SUM(CASE emailOpened WHEN true then 1 else 0) AS OpenedCount,
SUM(CASE emailUnsubscribed WHEN true then 1 else 0) as UnsubCount,
SUM(CASE emailBounced WHEN true then 1 else 0) as BouncedCount
FROM dbo.EmailCampaignTracking

EDIT2: в приведенном выше запросе замените true битовым значением, которое интерпретируется как истина (это может быть 0).

2 голосов
/ 13 ноября 2009

Я бы предположил, что вы хотите только посчитать записи, в которых значения установлены в true. Если так, то это может сработать:

SELECT SUM(CAST(EmailOpened AS INT)) AS OpenedEmails,
  SUM(CAST(EmailUnsubscribed AS INT)) AS UnsubscribedEmails,
  SUM(CAST(EmailBounced AS INT)) AS EmailBounced
FROM dbo.EmailCampainTracking
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...