我有一張這樣的桌子。如何優化下面的查詢?
_id (integer)
event_name(varchar(20))
event_date(timestamp)
這是下面給出的一些示例數據。
ID event_date event_name
101 2013-04-24 18:33:37.694818 event_A
102 2013-04-24 20:34:37.000000 event_B
103 2013-04-24 20:40:37.000000 event_A
104 2013-04-25 01:00:00.694818 event_B
105 2013-04-25 12:00:15.694818 event_A
我需要在以下格式從上面表中的數據。
Date count_eventA count_eventB
2013-04-24 2 1
2013-04-25 1 1
因此基本上需要每個日期的每個事件的計數。
我試過下面的查詢以獲得所需的結果。
SELECT A.date1 AS Date ,
A.count1 AS count_eventA,
B.count2 AS count_eventB,
FROM
(SELECT count(event_name)AS count1,
event_date::date AS date1
FROM tblname
WHERE event_name='event_A'
GROUP BY (event_date::date))AS A
LEFT JOIN
(SELECT count(event_name)AS count1,
event_date::date AS date1
FROM tblname
WHERE event_name='event_B'
GROUP BY (event_date::date))AS B ON A.date1=B.date2
可有人請建議我找出一個更好的優化查詢? ,或者我正在遵循一個好的方法。
會不會只有兩個事件? –
可以有2個以上的事件,但現在我只需要關心2個事件。 – Anant
PostgreSQL版本? '解析分析'?請參閱http://stackoverflow.com/tags/postgresql-performance/info –