Obter toda a data do mês junto com os dados da tabela
Eu tenho duas mesasuser_profile
etracked_search
. ouser_profile
tabela possui detalhes do usuário etracked_search
rastreia as pesquisas feitas por cada usuário.
Sempre que um usuário faz uma pesquisa, essa entrada é inserida notracked_search
mesa. Se nada for pesquisado em uma data específica, nada será adicionado emtracked_search
.
Preciso desenvolver um relatório em que preciso mostrar todos os dias do mês quantos usuários fizeram pesquisas.
Por exemplo:
CREATE TABLE tracked_search (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
created DATE,
user_id int NOT NULL
);
INSERT INTO tracked_search(created, user_id) VALUES
('2017-10-01', 1000),
('2017-10-01', 1000),
('2017-10-01', 2000),
('2017-10-01', 3000),
('2017-10-01', 4000),
('2017-10-04', 1000),
('2017-10-04', 2000),
('2017-10-04', 2000),
('2017-10-04', 2000),
('2017-10-04', 2000),
('2017-10-04', 3000),
('2017-10-31', 1000),
('2017-10-31', 2000),
('2017-10-31', 3000),
('2017-10-31', 4000),
('2017-10-31', 5000);
Saída desejada:
Date user_count
2017-10-01 4
2017-10-02 0
2017-10-03 0
2017-10-04 3
2017-10-05 0
...
2017-10-30 0
2017-10-31 5
Eu escrevi a seguinte consulta
SELECT ts.created , count( distinct ts.user_id) FROM tracked_search ts, user_profile u
WHERE ts.created>=(CURDATE()-INTERVAL 1 MONTH) AND u.id = ts.user_id
group by ts.created;
mas eu entendo
Date user_count
2017-10-01 4
2017-10-04 3
2017-10-31 5
Preciso imprimir todos os valores dos dias, se não houver entrada para uma data específica, deve ser zero.
Eu estou usando o MySQL.