0

假设我正在尝试从本月开始查找一家商店销售的前 10 种冰淇淋口味。然而,我目前的查询只给了我 7/01 的前十种口味

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)

4

3 回答 3

0

如何在下面使用日期条件

WHERE month(date)=3
于 2012-07-26T00:36:59.823 回答
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;
于 2012-07-26T00:39:17.143 回答
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;
于 2012-07-26T00:40:42.870 回答