2

我不完全确定如何表达这个问题,但我会解释我的问题......我在 mysql 数据库中有一个类似于

cust_name | order_date | sales_price
----------+------------+------------
john      | 2013-02-11 | 100
matt      | 2012-02-29 | 50
sam       | 2013-03-13 | 25
tony      | 2013-02-12 | 105

我发现 DATE_FORMAT(order_date, '%M') 可以带回日期的月份,而 DATE_FORMAT(order_date, '%Y') 将在一年中做同样的事情。

我想做的是查询数据库以带回类似的东西

year  | month | tot_price
------+------------------
2013  | 02    | 205
2013  | 03    | 25
2012  | 02    | 50

甚至可能只是在 2013 年才带回价值观。我有一些类似的尝试:

SET @july := 0;
Select customer,
    case DATE_FORMAT(order_date, '%M')
    when 'july' then @july := @july + 1
end as amount
from mytable

但是,我一无所获,因为我意识到我不知道如何输出变量值......那么,我应该怎么做才能编写这样的查询?提前致谢!

4

1 回答 1

3
Select year(order_date) as order_year,
       month(order_date) as order_month,
       sum(sales_price) as tot_price,
       group_concat(cust_name) as customers_in_month
from mytable
group by order_year, order_month

SQLFiddle 演示

于 2013-07-09T14:20:53.523 回答