2015-05-12 99 views
1

我有一張表,每行銷售一個產品。這些行包含日期。我想知道某個範圍內每個不同日期銷售的產品數量(用戶指定開始日期和結束日期)。每次銷售都有一個明確的行,因此在銷售幾種產品的日子中,存在具有此日期的幾行。我想統計這些行的數量,並使用相同的日期。這怎麼可能在postgresql中有效地完成?計算日期範圍內每個日期的銷售數量,postgresql

2015-01-02: 0 
2015-01-03: 7 
2015-01-04: 2 
+0

這些日期postgresql'datetimes'或'varchars'? – jaynp

+0

@ dal102 - 他們是varchars(在這種情況下是不可避免的) –

+0

我在下面的答案中添加了處理這兩種情況的信息。 – jaynp

回答

1

假設日期列存儲爲datetime,這樣的事情應該讓你在正確的方向:

SELECT date_trunc('day', TIMESTAMP sales.date) as day, COUNT(*) 
FROM sales 
WHERE day >= start and <= end 
GROUP BY day; 

其中startend由用戶填寫。

Postgres的日期功能的詳細文檔這裏找到: http://www.postgresql.org/docs/9.4/static/functions-datetime.html


如果他們datetime,您可以使用to_date功能與適當的格式字符串轉換爲datetime和使用的解決方案以上:

SELECT date_trunc('day', to_date('2015-01-02', 'YYYY-MM-DD')); 

http://www.postgresql.org/docs/9.4/static/functions-formatting.html