2017-02-22 7 views
1

私はSQL(mysql)でピボットテーブルを作成する作業をしています。この手順をステップごとに進めたいので、この質問は一連の試行より複雑なピボット・テーブルをSQLで構築します。SQLでのピボットテーブルの作成:集計ソート

私はタイトルを与え、次のスキーマを持っている:

  • プロバイダ
  • 私はそうのように、プロバイダとのタイトルでそのグループの集約を構築したいタイトル
  • 収入

を:

provider title  revenue 
Sony  titanic 9.99 
Paramount T2   14.99 
Sony  star wars 12.99 

これは単純明快であり、我々はによってそれを集約することができます

SELECT provider, title, SUM(revenue) FROM table GROUP BY provider, title 

私がやりたい次の事はアルファベット順、タイトルによって、そのプロバイダの収入の合計で最初のプロバイダー、ソートされ、 。たとえば、上記のようにソートする必要があります:

[-] Sony (12.99+9.99 = 22.98) 
    - star wars (A-Z) 
    - titanic (A-Z) 
[-] Paramount (9.99) 
    - T2 

SQLの集計ではどうすればよいですか?ここでは、サンプルデータを持つSQLのフィドルです:http://sqlfiddle.com/#!9/a9b5d9/2

+1

MySQLを使用している場合はBigQueryを使用しますか? –

+0

@ElliottBrossard私は、同じSQLが適用されると仮定します(ベンダー固有のクエリではありません)。私は、すべてのタグを使用してクエリが任意のメインのSQLデータベースに適用されることを示すだろうと思ったが、それが間違っている場合は私を修正します。 – David542

答えて

2
SELECT b.provider,a.title,b.ttl,sum(a.revenue) AS rev 
FROM tab AS a 
JOIN (
    SELECT provider,sum(revenue) AS ttl FROM tab GROUP BY 1 
) AS b ON a.provider = b.provider 
GROUP BY 1,2,3 
ORDER BY 3 DESC,2 

enter image description here

はあなたSQLfiddleを開くことができない、と私は私のローカルサイトにあなたのSQLをコピーし、結果は以下の通りである:

enter image description here

+0

では、SQLFiddleデータの例を見てみましょう。上記は適切に分類されていないようです。 – David542

+0

SQLFiddleは機能しませんが、ローカルマシンにSQLをコピーすると、正常に動作します – SIDU

+0

更新された回答がありがとうございます。 – David542

1

必要なのはwith rollup句ですお問い合わせの場合:

select provider, title, sum(customer_price) revenue from `100` 
group by provider, title 
with rollup 
このように、0

「合計」の行は、プロバイダとタイトル列内のNULLを持つことになります(最後の行は、総計行です):これはSQL Serverとタグ付けされているのはなぜ

|    provider |      title | revenue | 
|------------------------|----------------------------|---------| 
|    DISTRIBBER |    Finding Joe | 16.99 | 
|    DISTRIBBER |      (null) | 16.99 | 
|   Echo Bridge |    Do Something | 1.99 | 
|   Echo Bridge |     Down in LA |  0 | 
|   Echo Bridge | The L.A. Complex, Season 1 | 19.99 | 
|   Echo Bridge | The Other Side of the Door | 6.97 | 
|   Echo Bridge |    Who You Know | 3.98 | 
|   Echo Bridge |      (null) | 32.93 | 
| Electric Entertainment |   Leverage, Season 4 | 31.99 | 
| Electric Entertainment |  The Cross My Heart Job | 2.99 | 
| Electric Entertainment |    The Inside Job | 1.99 | 
| Electric Entertainment |    The Radio Job | 1.99 | 
| Electric Entertainment |  The Scheherazade Job | 2.99 | 
| Electric Entertainment |      (null) | 41.95 | 
|    HALLMARK |  The Good Witch's Gift | 3.99 | 
|    HALLMARK |      (null) | 3.99 | 
|   Quebec Inc. |  2 Frogs In the West | 5.99 | 
|   Quebec Inc. |      (null) | 5.99 | 
|     VIRGIL |   One Lucky Elephant | 3.99 | 
|     VIRGIL |      (null) | 3.99 | 
|     (null) |      (null) | 105.84 | 

SQL Fiddle

+0

これはプロバイダーの収入の降順でソートされていないようですか? – David542

+0

私はあなたのための練習としてそれを残します – cha