2013-02-07 77 views
0

创建一个从表视图我有这样的一个表:有多个主键

Column   |   Type   | Modifiers 


username  | character varying(12) | not null 

electioncode | integer    | not null 

votes   | integer    | default 0 


PRIMARY KEY (username, electioncode) 

我需要创建用户名,electioncode,MAX(票)的图 如果我使用此查询它的工作原理但没有用户名:

通过选择代码从表组中选举代码,max(票);

如果我添加的用户名就要求我将其添加到组通过,但如果我这样做,它给我的整个表,而不是仅仅的用户名,electioncode-maxvotes你想获得用户名关联

+0

可能重复的[SQL:选择每个GROUP BY组的第一行?](http://stackoverflow.com/questions/3800551/sql-select-first-row-in-each-group-by-group) –

回答

1

做有这个票数?或在给定选举代码中的任何用户名?

如果第一:

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

如果对方:

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

首先是完美的,非常感谢你,编辑问题的人和其他人。 – gattol

0

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

一个建议:你想在一张纸上写出你想看到的输出,然后构造查询...如果你想用户名,Electioncode和max(票),然后想象你将如何显示数据哪里有两个用户名 - 用户1和用户2谁拥有选举代码001和每个投票1?你会如何显示这个?