Хранить в базе данных информацию о лицах, которые входят в систему и выходят из нее.
Я запускаю следующее, чтобы найти количество раз, когда человек входил в систему в течение определенного периода времени.
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, что будет количеством дней, в течение которых люди входят в систему. Человек может войти в систему много раз в течение дня. Я не вижу способа получить количество строк из запроса?
Чтобы пойти здесь немного по касательной, я бы сказал, что было бы лучше подсчитать количество строк в коде, если вы можете это сделать, потому что с приведенными ниже ответами вам, похоже, придется вернуться в базу данных и выполнить почти дублированный запрос, или вам придется включить количество строк в качестве нового столбца, который будет повторять значение много раз. Было бы достаточно просто сделать yourQueryResult.Rows.Count (C#)?


Возможно, оберните весь запрос в подзапрос и примените подсчет
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?
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 Тогда отметьте это предложение как ответ. Потому что так работает SO — вопросы получают ответил, чтобы другие с похожими вопросами могли найти ответы.
Вы имеете в виду, что хотите вернуть количество строк?