Partially distinct select
本问题已经有最佳答案,请猛点这里访问。
我有一个字段
所以我需要为每个utm选择不同的utm和任何一个跟踪id(让我们说第一个)。
例如,我们得到了表格:
1 2 3 4 5 6 7 8 | utm | tracking_id ------------------- ddff | 1 ddff | 2 llzz | 3 ddff | 4 ohoh | 5 ohoh | 6 |
作为我希望获得的输出:
1 2 3 4 5 | utm | tracking_id ------------------- ddff | 1 llzz | 3 ohoh | 5 |
我使用PostgreSQL 9.1。
有没有办法用SQL做到这一点?
1 2 3 | SELECT utm, MIN(tracking_id) FROM t GROUP BY utm |
如果您只有一列,那么简单聚合就是您想要的,请参考Clodoaldo Neto的建议。
如果您有多个列,则可以在语法上使用dictinst:
1 2 3 4 | SELECT DISTINCT ON(utm) utm, tracking_id, column1, column2, ... FROM t ORDER BY utm, tracking_id |
sql小提琴demo