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 =

我的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 = 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。这对我来说似乎是合理的。您还没有提供示例数据、期望的结果或影响者的真实定义。我如何提供示例数据?影响者的屏幕截图是什么?