2014-01-05 120 views
1

目前,我有以下數據結構,上市運動的結果:重新組織數據結構

table_org: 
-------------------------------- 
Name Club Place Irrelevant_data 
-------------------------------- 
John ABC 1  xyz 
John ABC 2  abc 
John ABC 1  def 
Jane DEF 1  abc 
Jane DEF 3  ref 
Mark ABC 2  stu 

這是目前由一個python 2.7.3網頁抓取腳本生成的csv文件導入到SQLite Manager。行數是1000

我想獲得一個新的表中的數據結構如下:

table_new: 
----------------------------- 
Name Club Gold Silver Bronze 
----------------------------- 
John ABC 2 1  0 
Jane DEF 1 0  1 
Mark ABC 0 1  0 

什麼叫此操作,我該如何實現呢?

我的工具是SQLite Manager本身或python模塊。

在我的研究中,我發現可能應該使用COUNT方法,但是我找不到相關示例。請注意,我是數據庫中的新手。

回答

1

您可以generate a medal count table這樣的:

SELECT Name, Club, 
SUM(CASE WHEN Place = 1 THEN 1 ELSE 0 END) AS Gold, 
SUM(CASE WHEN Place = 2 THEN 1 ELSE 0 END) AS Silver, 
SUM(CASE WHEN Place = 3 THEN 1 ELSE 0 END) AS Bronze 
FROM tbl 
GROUP BY Name, Club 

這將產生

+------+------+------+--------+--------+ 
| Name | Club | Gold | Silver | Bronze | 
+------+------+------+--------+--------+ 
| Jane | DEF | 1 | 0 | 1 | 
| John | ABC | 2 | 1 | 0 | 
| Mark | ABC | 0 | 1 | 0 | 
+------+------+------+--------+--------+