【发布时间】:2012-10-10 21:55:40
【问题描述】:
我真正的问题与记录大量反病毒产品中的哪一个同意给定样本是给定反病毒家族的成员有关。该数据库有数百万个样本,每个样本都有数十个反病毒产品投票。我想问一个查询,例如“对于包含名称 'XYZ' 的恶意软件,哪个样本得票最多,哪些供应商投票支持它?”并得到如下结果:
"BadBadVirus"
V1 V2 V3 V4 V5 V6 V7
Sample 1 - 4 votes 1 0 1 0 0 1 1
Sample 2 - 5 votes 1 0 1 0 1 1 1
Sample 3 - 5 votes 1 0 1 0 1 1 1
total 14 3 3 2 3 3
这可能用来告诉我供应商 2 和供应商 4 要么不知道怎么做 检测此恶意软件,或者他们将其命名为不同的名称。
我将尝试稍微概括我的问题,同时希望不会破坏您帮助我的能力。假设我有五个选民(Alex、Bob、Carol、Dave、Ed)被要求查看五张照片(P1、P2、P3、P4、P5)并决定照片的“主要主题”是什么。对于我们的示例,我们将假设它们仅限于“Cat”、“Dog”或“Horse”。不是每个选民都会对每件事都投票。
数据以这种形式存在于数据库中:
Photo, Voter, Decision
(1, 'Alex', 'Cat')
(1, 'Bob', 'Dog')
(1, 'Carol', 'Cat')
(1, 'Dave', 'Cat')
(1, 'Ed', 'Cat')
(2, 'Alex', 'Cat')
(2, 'Bob', 'Dog')
(2, 'Carol', 'Cat')
(2, 'Dave', 'Cat')
(2, 'Ed', 'Dog')
(3, 'Alex', 'Horse')
(3, 'Bob', 'Horse')
(3, 'Carol', 'Dog')
(3, 'Dave', 'Horse')
(3, 'Ed', 'Horse')
(4, 'Alex', 'Horse')
(4, 'Bob', 'Horse')
(4, 'Carol', 'Cat')
(4, 'Dave', 'Horse')
(4, 'Ed', 'Horse')
(5, 'Alex', 'Dog')
(5, 'Bob', 'Cat')
(5, 'Carol', 'Cat')
(5, 'Dave', 'Cat')
(5, 'Ed', 'Cat')
目标是,给定我们正在寻找的照片主题,我们想知道有多少选民认为这是该照片的主要观点,但也列出了哪些选民认为。
Query for: "Cat"
Total Alex Bob Carol Dave Ed
1 - 4 1 0 1 1 1
2 - 3 1 0 1 1 0
3 - 0 0 0 0 0 0
4 - 1 0 0 1 0 0
5 - 4 0 1 1 1 1
------------------------------------
total 12 2 1 4 3 2
Query for: "Dog"
Total Alex Bob Carol Dave Ed
1 - 1 0 1 0 0 0
2 - 2 0 1 0 0 1
3 - 1 0 0 1 0 0
4 - 0 0 0 0 0 0
5 - 1 1 0 0 0 0
------------------------------------
total 5 1 2 1 0 1
我可以以我存储的格式处理数据吗?
我很难获得执行此操作的查询 - 尽管将数据转储出来然后编写一个程序来执行此操作很简单,但如果可以的话,我真的希望能够在数据库中执行此操作.
感谢您的任何建议。
【问题讨论】:
标签: sql postgresql pivot aggregate crosstab