Показать полную графическую версию : агрегация id по дням
Подскажите, пожалуйста
есть запрос
select id, day
from mytable
как мне агрегировать так, чтобы на выходе было количество уникальных id в день
count day
5 1.09.2017
10 2.09.2017
т.е. первого сентября пришло 5 уникальных id
а второго сентября 10 уникальных id пришло
Примерно так:
SELECT day, Count(id) AS [Count-id] FROM (SELECT DISTINCT day, id FROM mytable) GROUP BY day;
Сначала Вы оставляете только уникальные записи в парах day/id — «SELECT DISTINCT day, id FROM mytable», затем группируете результат по датам, считая количество id.
Iska, спасибо
а если в этом запросе есть дополнения
select id, day
from mytable
where day >='02.09.2017' and day <='05.09.2017'
and event ='subject'
and level=40
куда мне вставить конструкцию where
в эти скобки?
(SELECT DISTINCT day, id FROM mytable
where...)
(SELECT DISTINCT day, id FROM mytable
where...) »
Ну да, как-то так.
Iska, еще вопрос
подскажите, как сделать чтобы day на выходе был в формате
09-05-2017, а не 09-05-2017 5:34:23
kontox, у меня отсутствует Microsoft SQL. Попробуйте рассмотреть и опробовать варианты, предложенные, например, здесь: How can I truncate a datetime in SQL Server? - Stack Overflow (https://stackoverflow.com/questions/923295/how-can-i-truncate-a-datetime-in-sql-server).
kontox, если у вас "day на выходе в формате 09-05-2017 5:34:23", то это, очевидно, и на входе, и не day. И, как следствие, предложенный Iska код работать не будет.
а если в этом запросе есть дополнения
and event ='subject'
and level=40
куда мне вставить конструкцию where »
это зависит от того, как эти "дополнения" влияют на критерий уникальности.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.