2017-03-17 53 views
1

我有一個巨大的魔法數據庫:聚會卡片和裝備列表。牌桌包含每張牌的類型和總法術力費用(等等)。甲板使用兩個表格進行存儲:甲板本身稱爲「甲板」,以及一個名爲「甲板人員」的表格,其中每行包含甲板的ID,甲板中包含的卡的ID和出現在卡組中的那張卡的副本數量。在PostgreSQL中查找每個包含Y的X的比例?

我想是這樣的數據的圖,其中的行是:

甲板:甲板

CMC的ID:經轉換的魔法消耗在該甲板

出現在至少一個卡

比例:在該甲板的非地的卡,有CMC

還是我最好獲得在Python這一數據或R什麼的百分比是多少?

This question is conceptually similar, but no one has answered it.

編輯:

既然你這麼問,這裏的一些示例數據:

卡:

id |  name   | fulltype  | cmc 
----+---------------------+-----------------+----- 
    1 | "Ach! Hans, Run!" | Enchantment  | 6 
    2 | 1996 World Champion | Summon _ Legend | 5 
    4 | AWOL    | Instant   | 3 
    5 | Abandon Hope  | Sorcery   | 2 
    6 | Abandon Reason  | Instant   | 3 

甲板:

id |  name 
----+----------------- 
    1 | RDW 
    2 | Red Deck Recall 
    3 | RDW 
    4 | Red Deck Wins 
    5 | Red Deck Wins 

甲板部隊:

deck | card | count 
------+-------+------- 
    1 | 14031 |  1 
    1 | 15011 |  1 
    1 | 14263 |  1 
    1 | 12966 |  1 
    1 | 12536 |  1 

任何套牌都會有很多卡。任何卡都可能出現在許多套牌中。每張卡片都有一個從0到12的整數關聯它被稱爲「轉化的法術力費用」或CMC。這就是你需要知道的一切。不要打擾學習在我的賬戶上玩魔術。

而且我想可能是這個樣子:

deck | cmc | perc 
------+-------+------- 
    1 | 1 | 11 
    1 | 2 | 11 
    1 | 3 | 11 
    1 | 4 | 11 
    1 | 5 | 11 

其中「四氯乙烯」的第一行中表示,與該ID 1在甲板上的卡11%的人CMC 1.

+1

您是否介意包含一小部分數據(就像問題中提到的那樣),並且可能顯示所需的輸出結果? –

回答

0

解決了!

SELECT 
    d.id, 
    c.cmc, 
    (CAST(SUM(m.count) AS FLOAT)/
     (SELECT 
      CAST(SUM(m1.count) AS FLOAT) 
     FROM deckmembers AS m1 
     JOIN cards AS c1 ON c1.id=m1.card 
     WHERE NOT m1.sideboard 
     AND c1.fulltype NOT LIKE '%Land%' 
     AND m1.deck=d.id) 
    ) * 100 AS perc 
FROM deckmembers AS m 
JOIN decks AS d ON d.id=m.deck 
JOIN cards AS c ON c.id=m.card 
WHERE NOT m.sideboard 
AND c.fulltype NOT LIKE '%Land%' 
GROUP BY d.id, c.cmc; 

我還發布了一個解決方案,簡單版本的問題here

相關問題