如果在SQL中的另一列中满足条件,如何对列中的单元格求和

时间:2013-07-09 14:18:51

标签: mysql sql

我不完全确定如何提出这个问题,但我会解释我的问题...... 我在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

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

1 个答案:

答案 0 :(得分: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 demo