如何在Postgresql中进行分组和计数

时间:2014-10-05 17:49:43

标签: postgresql count group-by distinct

我有一张这样的表

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行

1 个答案:

答案 0 :(得分:0)

尝试:

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

您应该将表格替换为表格的名称。

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

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