Sql 在一个查询中选择*并选择计数(*)
我的SQL查询如下所示Sql 在一个查询中选择*并选择计数(*),sql,database,postgresql,Sql,Database,Postgresql,我的SQL查询如下所示 SELECT * FROM categories AS c LEFT JOIN LATERAL (SELECT i.* FROM influencer_profiles AS i WHERE c.id = i.category_id ORDER BY i.updated_at LIMIT 2) AS i ON 1 =
SELECT *
FROM categories AS c
LEFT JOIN LATERAL (SELECT i.*
FROM influencer_profiles AS i
WHERE c.id = i.category_id
ORDER BY i.updated_at
LIMIT 2) AS i ON 1 = 1
INNER JOIN users AS u ON i.user_id = u.id
但我还想计算每个类别的影响者档案
,以显示每个类别中有多少影响者档案
s。如何使用COUNT(*)
选择所有列
SELECT *
FROM categories AS c
LEFT JOIN LATERAL (SELECT COUNT(*)
FROM influencer_profiles AS i
WHERE c.id = i.category_id
ORDER BY i.updated_at
LIMIT 2) AS i ON 1 = 1
INNER JOIN users AS u ON i.user_id = u.id
此代码不起作用。也许您只是想要一个窗口函数。我注意到您正在一个位置使用
左连接
,而内部连接
正在撤消它
因此,我想:
SELECT c.*, i.*, u.*,
COUNT(*) OVER (PARTITION BY c.id) as category_cnt
FROM categories c LEFT JOIN LATERAL
(SELECT i.*
FROM influencer_profiles AS i
WHERE c.id = i.category_id
ORDER BY i.updated_at
LIMIT 2
) i
ON 1=1 LEFT JOIN
users u
ON i.user_id = u.id;
示例数据、所需结果和适当的数据库标记都会有所帮助。感谢您的帮助。但是查询中的
category\u cnt
为所有类别返回2(因为限制为2)。很抱歉,我的问题不清楚。我想要的是统计每个类别中的所有影响者(profile
),而不是从sub选择
@freewebwithme。这对我来说似乎是合理的。您还没有提供示例数据、期望的结果或影响者的真实定义。我如何提供示例数据?影响者的屏幕截图是什么?