【问题标题】:how do I group by in this select statement?如何在此选择语句中分组?
【发布时间】:2020-07-02 09:21:15
【问题描述】:
select '2020-07-02'::date - "duedate"::date as days_passed_since_invoice_was_sent,
       duedate,
       contract_id, 
       paiddate, 
       paymentdueon, 
       component,
       record_valid_from, 
       dueamount, 
       unpaidamount, 
       waivedamount
from dwd_tb_payment_schedule
where record_valid_to = '9999-12-31'
  and unpaidamount > 0
order by duedate asc

如何按contract_id 分组? 我正在使用 postgresql 9.6 新编辑:所以我的目标是获取contract_id最近几天的总数。 然后还显示该特定数据点的其余信息,因此我还要选择表中的其余列。那些我不希望做任何事情的专栏。让它们保持原样。

【问题讨论】:

  • 您想对不想分组的列做什么?总结他们?最小/最大?平均的?还有什么?请edit您的问题(通过单击其下方的edit 链接)并添加一些示例数据和基于该数据的预期输出为formatted text。请参阅here,了解有关如何创建漂亮的文本表格的一些提示。 (edit 您的问题 - 在 cmets 中邮政编码或其他信息)

标签: sql postgresql group-by


【解决方案1】:

如果您希望每个contract_id 有一行,那么您可以使用distinct on

select distinct on (contract_id) ('2020-07-02'::date - "duedate"::date) as days_passed_since_invoice_was_sent,
       duedate, contract_id,  paiddate, paymentdueon, component,
       record_valid_from, dueamount,  unpaidamount, waivedamount
from dwd_tb_payment_schedule
where record_valid_to = '9999-12-31' and unpaidamount > 0
order by contract_id, duedate asc;

这将返回每个合约的最新duedate 行(当然满足where 条件)。

【讨论】:

  • 这是完美的戈登林诺夫!!!我不明白你是怎么想到的,或者我是怎么忘记区分它们的!!!但它没有。成功了。让我知道我是否可以帮助您:D 干杯!
【解决方案2】:

根据我对您问题的了解,您只想按一列分组。我认为这可以在 PostgreSQL 中完成。更多选项可以参考https://www.postgresqltutorial.com/postgresql-group-by/#:~:text=Introduction%20to%20PostgreSQL%20GROUP%20BY%20clause&text=SELECT%20column_1%2C%20column_2%2C%20aggregate_function(,list%20of%20comma%2Dseparated%20columns.

select '2020-07-02'::date - "duedate"::date as days_passed_since_invoice_was_sent,
       duedate,
       contract_id, 
       paiddate, 
       paymentdueon, 
       component,
       record_valid_from, 
       dueamount, 
       unpaidamount, 
       waivedamount
from dwd_tb_payment_schedule
where record_valid_to = '9999-12-31'
  and unpaidamount > 0
GROUP BY customer_id
order by duedate asc

【讨论】:

    猜你喜欢
    • 2022-08-03
    • 2021-07-11
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    相关资源
    最近更新 更多