2012-01-16 17 views
0

私は異なる市場で複数の製品を販売していますが、それぞれのタイトルの合計を集計する必要があります。起動するには:GROUP BY文を使用して行を集計する

mysql> SELECT title, partner_share_currency, us_earnings_usd, cad_earnings_cad 
     FROM raw_financials WHERE title LIKE "%Gamers%"; 
+--------+------------------------+-----------------+------------------+ 
| title | partner_share_currency | us_earnings_usd | cad_earnings_cad | 
+--------+------------------------+-----------------+------------------+ 
| Gamers | USD     |   3.2500 |   0.0000 | 
| Gamers | CAD     |   0.0000 |   4.0000 | 
| Gamers | USD     |   4.5000 |   0.0000 | 
+--------+------------------------+-----------------+------------------+ 

これは、私は現在、タイトル、GROUP BYを取得するためにやっているものです:あなたが見ることができるように

mysql> SELECT title, us_earnings_usd, cad_earnings_cad 
     FROM raw_financials WHERE title LIKE "%Gamers%" GROUP BY title; 
+--------+-----------------+------------------+ 
| title | us_earnings_usd | cad_earnings_cad | 
+--------+-----------------+------------------+ 
| Gamers |   3.2500 |   0.0000 | 
+--------+-----------------+------------------+ 

が、それは価値の行を合計しません。どのように私はそれが私を与えるために、値の行を合計するようなSELECTステートメントを変更します

+--------+-----------------+------------------+ 
| title | us_earnings_usd | cad_earnings_cad | 
+--------+-----------------+------------------+ 
| Gamers |   7.7500 |   4.0000 | 
+--------+-----------------+------------------+ 
+2

'group by'節が合計しません。彼らは、集計関数で使用するために、どの行を '折りたたむ'べきかを指定するだけです。 'sum()'関数(または他の集約関数)がどのフィールドに適用されるべきかを依然として伝える必要があります。 –

答えて

2

ような何か試してみてください:

mysql> SELECT title, SUM(us_earnings_usd) AS us_earnings_usd, SUM(cad_earnings_cad) AS cad_earnings_cad 
     FROM raw_financials WHERE title LIKE "%Gamers%" GROUP BY title; 

SUMすると、各グループを操作する関数ですあなたの声明にはGROUP BY句があります。より類似した関数については、MySQL aggregate functionsを参照してください。

+1

タイトルごとにグループ化し、非カラム関数を選択するにはどうすればいいですか( 'partner_share_currency')? – gdoron

+0

これは問題の真っ直ぐにコピーされました。私はちょうどサム関数を追加しました。 OPはおそらく 'partner_share_currency'でグループ化して、例のように結果を得る必要があります。 –

+1

間違いを指摘してくれてありがとう - 私は質問を反映するように変更します。 – David542

3

行を合計するには、合計SUM()が必要です。あなたはGROUP BYしか持っていません。 MySQLは唯一title他のほとんどのRDBMSもGROUP BYに他の非集計列を一覧表示する必要でしょうGROUP BY句、中を含めるすることを許可することを

SELECT 
    title, 
    partner_share_currency, 
    SUM(us_earnings_usd) AS usd, 
    SUM(cad_earnings_cad) AS cad 
FROM raw_financials 
WHERE title LIKE '%Gamers%' 
GROUP BY title, partner_share_currency 

は注意してください。具体的にここには、partner_share_currency

関連する問題