2014-10-05 125 views
0

我有这样如何分组和计数在PostgreSQL

date  | text | link_id 
------------+-------+---------- 
05-10-2014 | lorem | 2 
06-10-2014 | lorem | 4 
05-10-2014 | lorem | 4 
05-10-2014 | lorem | 5 
05-10-2014 | lorem | 5 
05-10-2014 | lorem | 5 
05-10-2014 | lorem | 5 
05-10-2014 | lorem | 5 
05-10-2014 | lorem | 6 
05-10-2014 | lorem | 4 

一个表,我需要从我行此结果

date | text | link_id | value 
------------+-------+----------+------- 
05-10-2014 | lorem | 2  | 1 
06-10-2014 | lorem | 4  | 3 
05-10-2014 | lorem | 5  | 6 

为什么,如果我使用函数获取组的计数

COUNT(DISTINCT n) 

或仅

COUNT() 

它总是强迫我所有SELECT语句添加到GROUP

,我只有1个鲜明排

回答

0

尝试:

Select link_id, Count (link_id) 
From table 
Group by link_id; 

,你应该用的名称替换表的表。

聚合函数将应用于组中的所有行。因此,您首先按link_id进行分组,并获得具有相同link_id的行组。然后计算应用到每个组以计算每个组中的行数。你会得到link_id & &具有相同link_id作为结果的行数。

请注意,您的问题实际上并不清楚您打算如何为其他两个colums选择数据。在你给出link_id 4的例子中,你期望得到count 2,但是link_id 4的两条记录的日期不同(一个是5.10.2014,另一个是6.10.2014)。结果应该取哪一个?