使用多个主键从表创建视图

时间:2013-02-07 17:06:57

标签: sql postgresql create-view

我有一张像这样的桌子:

Column          |         Type          | Modifiers


 username       | character varying(12) | not null

 electioncode   | integer               | not null

 votes          | integer               | default 0


PRIMARY KEY (username, electioncode)

我需要创建一个包含用户名,选举码,最大值(投票)的视图 如果我使用此查询它工作正常,但没有用户名:

通过选举代码从表格组中选择选举代码,最大(投票);

如果我添加用户名,它会要求我将其添加到组中但是如果我这样做它会给我整个表而不仅仅是用户名-selectioncode-maxvotes

2 个答案:

答案 0 :(得分:1)

您想获得与此投票数相关联的用户名吗?或者给定选举代码中的任何用户名?

如果是第一个:

SELECT
    DISTINCT ON ( electioncode )
    *
FROM table
ORDER BY electioncode, votes desc;

如果是另一个:

SELECT
    electioncode,
    min(username),
    max(votes)
FROM
    table
GROUP BY electioncode;

答案 1 :(得分:0)

您的用户名字段似乎是唯一的。每个记录都有不同的用户名(我假设),因此当您按用户名分组时,它将为您提供所有记录。您要做的是逻辑问题而不是语法问题。

建议:你想在一张纸上写下你想要看到的输出然后构建查询...如果你想要用户名,选举代码和最大值(投票)那么想象你将如何显示数据两个用户名 - user1和user2谁有选举代码001并且每个都投了1个?你会如何展示这个?