2012-07-26 40 views
0

比方說,我試圖找到本月從商店出售的前10名冰淇淋口味。但是我現在的查詢只給我從7/01試圖找到「前n」,但與日期得到一些錯誤

select * 
from buy_history 
where date > '2012-07-01 00:00:00' 
group by flavor 
order by max(purchase_count) desc 
limit 10; 

十大風味(是顯然可以有每毫秒的多個冰淇淋購買。)

表看起來像 buy_history(id, flavor, date, purchase_count)

+0

你是不是想通過購買來順序計數按天或月彙總? – pyrospade 2012-07-26 00:53:39

+0

既不?在一段時間內? – Julian 2012-07-26 19:31:03

回答

0
select flavor, sum(purchase_count) as purchase_count_total 
from buy_history 
where date >= CONCAT(YEAR(CURDATE()), '-' MONTH(CURDATE()), '-1') 
group by flavor 
order by sum(purchase_count) desc 
limit 10; 
+0

這工作(雖然在這個問題,我要求最大) – Julian 2012-07-26 19:32:09

0

怎麼樣使用下面的日期條件

WHERE month(date)=3 
+0

nope,同樣的事情。只顯示三月份的第一個數字。 – Julian 2012-07-26 00:39:23

0

它只是以這種方式出現。進行手動計數(或將其存入電子表格並進行計算和驗證)。

這裏的問題是您將結果按特定列分組(group by flavor),並且您的結果有其他列沒有包含在group by子句中或集合函數中。因此,MySQL不知道如何顯示這些列(服務器選擇顯示哪一列)。

你應該這樣做,而不是(*大約):

select flavor, sum(purchase_count) as total_sold 
from buy_history 
where date > '2012-07-01 00:00:00' 
group by flavor 
order by total_sold desc 
limit 10; 
相關問題