【问题标题】:Multiple unwanted records in Group by clause in PostgressPostgres中Group by子句中的多个不需要的记录
【发布时间】:2016-06-05 19:21:20
【问题描述】:

我有两个表,我将它们连接在一起,然后运行 ​​group by 子句。问题是我不断收到不需要的数据。

client table
----------
name
company_id
created_at


company table
-----------
name

查询:

SELECT company.name, clients.name, MIN (created_at) created_at
FROM company
INNER JOIN client
ON client.company_id = company.id
group by company.name, client.name

查询返回给我所有的用户,但我想要的只是在每个公司中首先创建的每个用户。知道我需要客户名称,我应该改变什么。

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    如果您想要每个公司的第一个,请使用distinct on。这是一个仅在 Postgres 中可用的不错的构造:

    SELECT DISTINCT ON (co.name) co.name, cl.name, cl.created_at
    FROM company co INNER JOIN
         client cl
         ON cl.company_id = co.id
    ORDER BY co.name, cl.created_at asc;
    

    【讨论】:

    • 这解决了问题,但是在 distinct on (co.name) 之后应该没有,
    猜你喜欢
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多