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中做到这一点?
你可以尝试:
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)
| 归档时间: |
|
| 查看次数: |
3598 次 |
| 最近记录: |