2017-04-03 9 views
0

私はこの要求を持っていますが、うまく動作しません。mysqlのsum amont

select date_format(date, "%Y-%m-%d") as month, 
              sum(value) as total 
            from :table_orders_sales_commission 
            where date_sub(now(), interval 12 month) <= date 
            group by month 

結果は次のとおりです。

2017-04-02 4.6440 
2017-04-03 2.6200 

どのように1ヶ月(4.644 + 2.62)の合計を持っていますか?

+0

日付とグループから月を抽出する必要がありますあなたはあなたが望むものを得るでしょう – Rams

+0

月の書式を設定するときに昼の部分を削除するだけですf ield。現在、グループではその日も含まれています。 date_format(日付、 '%Y-%m')を月として表します。 – JuveLeo1906

答えて

2

使用MONTH関数を使用すると、日付月呼び出している

select MONTH(date_format(date, "%Y-%m-%d")) as month, 
sum(value) as total 
from :table_orders_sales_commission 
where date_sub(now(), interval 12 month) <= date 
group by MONTH(date_format(date, "%Y-%m-%d")) 
2

によりグループとしてそれを使用して。これは、毎日のすべての値を合計していることを意味します。 MySQLで標準の日付形式こと

select date, MONTH(date) as month, 
sum(value) as total 
from :table_orders_sales_commission 
where date_sub(now(), interval 12 month) <= date 
group by month 

MONTHのみフィールドから月の値を返しますし、和演算をしながら、あなたが月単位で集計することができます

注:私はこのような何かをしたいです既に設定したいものです。操作する必要はありませんので、date_format(date, "%Y-%m-%d")に関連する部分は削除しましたが、カスタム日付フィールドマスクを持っていればそれを保存することができます

+0

必要な結果を得るにはいくつかの方法がありますが、これはおそらく最も簡単で最良のアプローチです。 – JuveLeo1906