2016-06-01 6 views
0

によって、私は一時テーブルのカップルを作成し、自分のデータベースに参加することにより、このような表を作成しました:SQL:グループが複数の列

customerid Segment Sales Country 
1   1  $3  US 
2   2  $4  CAN 
3   3  $5  US 
4   5  $6  CAN 
5   4  $5  US 
6   6  $1  CAN 
7   7  $4  US 
8   3  $2  CAN 
9   2  $2  US 
10   1  $1  CAN 
11   9  $5  US 
12   10  $2  CAN 
13   1  $4  US 
14   3  $2  CAN 
15   4  $1  US 

を私は何を達成したいことはこれです:

Country Segment Count of customer by segment sum of sales by segment 
CAN  1  70        $3,000 
CAN  2  30        $3,000 
CAN  3  20        $3,000 
CAN  4  110        $3,000 
CAN  5  90        $3,000 
CAN  6  10        $3,000 
CAN  7  60        $3,000 
CAN  8  5000       $3,000 
CAN  9  2527.857143      $3,000 
CAN  10  2939.880952      $3,000 
US  1  3351.904762      $3,000 
US  2  3763.928571      $3,000 
US  3  4175.952381      $3,000 
US  4  4587.97619      $3,000 
US  5  5000       $3,000 
US  6  5412.02381      $3,000 
US  7  5824.047619      $3,000 
US  8  6236.071429      $3,000 
US  9  6648.095238      $3,000 
US  10  7060.119048      $3,000 

これはどのように達成するのですか?

+2

。 。テーブルをリンクとしてではなくテキストとしてテキストにするほうがはるかに優れています。 –

+0

「セグメント別顧客数」が小数点にあるのはなぜですか? – Squirrel

+0

テーブルがここでうまく表示されていません。セグメントは1〜10です。 –

答えて

0

パーティションは、元のテーブルのすべてのレコードを保持し、いくつかの集約も表示したい場合に便利です。しかし、あなたが私たちに示したところから、それぞれCountry/Segmentが一度出現する結果セットが必要なように見えます。この場合、単純なGROUP BYは動作します。

SELECT Country, Segment, COUNT(*) AS `Count of customer by segment`, 
    SUM(Sales) AS `sum of sales by segment` 
FROM yourTable 
GROUP BY Country, Segment 
ORDER BY Country, Segment 
関連する問題