2017-02-22 43 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

爲什麼這個標籤與SQL Server和BigQuery如果你使用MySQL? –

+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 

的「總」行會在供應商和標題欄的NULL(最後一行是總計行),就像這樣:

|    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

這似乎並不是按提供者收入desc排序? – David542

+0

我會把它作爲一個練習給你 – cha