2016-06-01 18 views
0

ich durch die Schaffung von ein paar temporäre Tabellen und verbinden sie in meiner Datenbank eine Tabelle ähnlich wie diese erstellt:SQL: Gruppe von mehreren Spalten

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 

Was will ich erreichen, ist dies:

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 

Wie erreiche ich das?

+2

. . Es ist viel besser, die Tabellen in der Frage als Text als als Links zu setzen. –

+0

Warum ist die Anzahl der Kunden pro Segment in Dezimalzahlen? – Squirrel

+0

Die Tische sehen hier nicht gut aus. Die Segmente sind 1-10. –

Antwort

0

Eine Partition wäre nützlich, wenn Sie alle Datensätze in der Originaltabelle beibehalten und gleichzeitig einige Aggregate anzeigen möchten. Wie auch immer, von dem, was Sie uns gezeigt haben, sieht es so aus, als ob Sie eine Ergebnismenge haben möchten, in der jedes Country/Segment einmal erscheint. In diesem Fall sollte ein einfacher GROUP BY funktionieren:

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