postgreSQL选择未在聚合函数中使用的其他列

set*_*rgo 3 database postgresql aggregate-functions

我正在尝试在PostgreSQL中编写一个查询,我有点沮丧,因为它适用于其他数据库引擎.我需要从给定的连接表中选择前5个用户,如下所示:

SELECT users.*, 
       COUNT(deals.id) AS num_deals 
FROM users, deals 
WHERE deals.users_id = users.id 
GROUP BY users.id 
ORDER BY num_deals LIMIT 5;

我需要前5名用户.此代码适用于sqlite,mysql等,但PostgreSQL拒绝选择未在聚合函数中使用的其他字段.我收到以下错误:

PGError: ERROR:  column "users.id" must appear in the GROUP BY clause or be used in an aggregate function
Run Code Online (Sandbox Code Playgroud)

我怎么能在PostgreSQL中做到这一点?

Ger*_*rat 7

你可以尝试:

SELECT users.*, a.num_deals FROM users, (
    SELECT deal.id as dealid, COUNT(deals.id) AS num_deals 
    FROM deals 
    GROUP BY deal.id
) a where users.id = a.dealid
ORDER BY a.num_deals DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)