전자 메일 상태에 대한 보고서를 작성하려고하고 있으며 매월 기록을 유지해야합니다. 여기 여러 날짜 열로 그룹화
데이터에 대한 내 테이블 구조입니다 :sent_on date;
sent boolean;
open date;
clicked date;
내가 될 것으로 예상 최종 출력 :
Month | Year | Sent Count | Open Count | Clicked Count
나는 개인 성명 등을 할 경우 내가 할 수 있다는 것을 알고
Select MONTH(sent_on), YEAR(sent_on), count(sent_on) FROM my_table
WHERE sent = true;
Select MONTH(open), YEAR(open), count(open) FROM my_table;
Select MONTH(clicked), YEAR(clicked), count(clicked) FROM my_table;
여러분이 도와 주며 간단한 아이디어를 제공 할 수 있습니까? 나는 뭔가를 놓치고 있다고 확신한다.
SELECT m, y, sent_count, open_count, clicked_count
FROM
(SELECT MONTH(sent_on) as m, YEAR(sent_on) as y
FROM my_table
WHERE sent = true
GROUP BY MONTH(sent_on), YEAR(sent_on)
UNION ALL
SELECT MONTH(open), YEAR(open)
FROM my_table
WHERE sent = true
GROUP BY MONTH(open), YEAR(open)
UNION ALL
SELECT MONTH(open), YEAR(open)
FROM my_table
WHERE sent = true
GROUP BY MONTH(open), YEAR(open)) d
LEFT JOIN
(Select MONTH(sent_on) as m , YEAR(sent_on) as y, count(sent_on) sent_count
FROM my_table
WHERE sent = true
GROUP BY MONTH(sent_on), YEAR(sent_on)) s on (s.y=d.y and s.m=d.m)
LEFT JOIN
(Select MONTH(open) as m , YEAR(open) as y, count(open) open_count
FROM my_table
WHERE sent = true
GROUP BY MONTH(open), YEAR(open)) o on (o.y=d.y and o.m=d.m)
LEFT JOIN
(Select MONTH(clicked) as m , YEAR(clicked) as y, count(clicked) clicked_count
FROM my_table
WHERE sent = true
GROUP BY MONTH(clicked), YEAR(clicked)) c on (c.y=d.y and c.m=d.m);
개방 세웠 및 전송을 클릭 : PS 사용하여 SQL은 여기
어떤 DBMS의 성능을 얻기 위해 쿼리 folowing 양식을 시작할 수 있습니다 당신이 사용하고 있습니까? –
아니요, 날짜입니다. 우리는 이메일을 열었거나 클릭 한 날짜를 알기 위해 날짜를 선택해야했습니다. – Milan
@ Lieven 우리는 POSTGRESQL을 사용하고 있습니다. – Milan