Сумма количества строк, возвращаемых count T-sql

Хранить в базе данных информацию о лицах, которые входят в систему и выходят из нее.

Я запускаю следующее, чтобы найти количество раз, когда человек входил в систему в течение определенного периода времени.

SELECT Count(Distinct(Date)) as Counter, 
       COUNT(*) as CNT
FROM InOutUserStatus
where date > '2019-03-11' and 
      Date < '2019-03-21' and 
      Email = '[email protected]' group by Date

это возвращает

    Counter CNT
  1    1     2
  2    1     1
  3    1     1

Результаты могут отличаться, но мне нужно иметь возможность получить сумму количества возвращенных строк, которая в этом случае будет равна 3, что будет количеством дней, в течение которых люди входят в систему. Человек может войти в систему много раз в течение дня. Я не вижу способа получить количество строк из запроса?

Вы имеете в виду, что хотите вернуть количество строк?

Ilyes 21.03.2019 13:09

Рассмотрим @@ROWCOUNT

Ilyes 21.03.2019 13:18

Чтобы пойти здесь немного по касательной, я бы сказал, что было бы лучше подсчитать количество строк в коде, если вы можете это сделать, потому что с приведенными ниже ответами вам, похоже, придется вернуться в базу данных и выполнить почти дублированный запрос, или вам придется включить количество строк в качестве нового столбца, который будет повторять значение много раз. Было бы достаточно просто сделать yourQueryResult.Rows.Count (C#)?

Dan Rayson 21.03.2019 13:18
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
165
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно, оберните весь запрос в подзапрос и примените подсчет

SELECT COUNT(*)
FROM   (

         SELECT Count(Distinct(Date)) as Counter, COUNT(*) as CNT
         FROM   InOutUserStatus
         WHERE  date > '2019-03-11' and
                Date < '2019-03-21' and
                Email = '[email protected]'
         GROUP BY Date
       ) a

Зачем здесь нужен GROUP BY Date?

Ilyes 21.03.2019 13:10
Ответ принят как подходящий

GROUP BY в этом случае не нужен, достаточно агрегации:

SELECT Count(Distinct [Date]) as Counter
FROM InOutUserStatus
WHERE date > '2019-03-11' AND 
      date < '2019-03-21' AND 
      Email = '[email protected]';

Точно, не могу поверить, что я пропустил это, спасибо

Roger 21.03.2019 13:21

@Roger Тогда отметьте это предложение как ответ. Потому что так работает SO — вопросы получают ответил, чтобы другие с похожими вопросами могли найти ответы.

SMor 21.03.2019 13:33

Другие вопросы по теме