Postres SQL 使用 GROUP BY 和 COUNT 选择

Posted

技术标签:

【中文标题】Postres SQL 使用 GROUP BY 和 COUNT 选择【英文标题】:Postres SQL select with GROUP BY and COUNT 【发布时间】:2021-03-25 09:26:29 【问题描述】:

我有这个 SQL 选择

SELECT t.debtor_account, COUNT(t.debtor_account)
FROM transaction t
GROUP BY t.debtor_account
HAVING COUNT(t.debtor_account) > 2;

哪个有效,但我需要从事务中选择所有。 但是当我尝试 SELECT * FROM ...... 我得到这个错误: 列“t.account_fk”必须出现在 GROUP BY 子句中或用于聚合函数中 任何想法选择具有相同的功能,但全选而不是债务人帐户?谢谢...

顺便说一句。表方案here

【问题讨论】:

【参考方案1】:

你可以使用窗口函数:

SELECT t.*
FROM (SELECT t.*, COUNT(*) OVER (PARTITION BY t.debtor_account) as cnt
      FROM transaction t
     ) t
WHERE cnt > 2
ORDER BY debtor_account;

【讨论】:

【参考方案2】:

你似乎想要窗口函数:

SELECT *
FROM (
    SELECT t.*, COUNT(*) OVER(PARTITION BY debtor_account) cnt
    FROM transaction t
) t
WHERE cnt > 2

【讨论】:

以上是关于Postres SQL 使用 GROUP BY 和 COUNT 选择的主要内容,如果未能解决你的问题,请参考以下文章

sql中group by和order by的区别

sql语句执行顺序之group by、order by

sqlserver2008,sql编程,group by 用法

sql语句中的group by要怎么用!!

sqlserver2008,sql编程,group by 用法

sqlserver2008,sql编程,group by 用法