在sqlite中重新组织数据结构(使用COUNT?)

时间:2014-01-05 13:47:52

标签: python database sqlite

目前我有以下数据结构,列出运动结果:

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

目前,这是从SQLite Manager网页抓取脚本生成的csv文件导入python 2.7.3。行数为1000。

我想在新表中获得以下数据结构:

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

这个操作叫做什么,我该如何实现呢?

我的工具本身是SQLite Managerpython个模块。

在我的研究过程中,我发现也许应该以某种方式使用COUNT方法,但我找不到相关的例子。请注意,我是数据库中的新手。

1 个答案:

答案 0 :(得分: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    |
+------+------+------+--------+--------+