考虑返回行的结果,并在您的应用程序之后他们旋转显示。
要返回所需的结果行,可以使用下面的查询:
SELECT
engagementCount,
COUNT(*) AS userCount
FROM (
SELECT
userID,
COUNT(*) AS engagementCount
FROM engagements
GROUP BY userID
) AS s
GROUP BY engagementCount
;
基本上,第一组engagements
行通过userID
,每位userID
的行数。之后,您使用计数作为分组标准并计算在该计数中找到了多少用户。
如果您坚持要返回SQL中的柱状视图,则需要求助于动态SQL,因为最终结果集中的列数不确定。你可能会需要临时存储的内部SELECT的结果,进行扫描,以建立数表达式的列表,每engagementCount
价值,并最终建立这样的查询:
SELECT
COUNT(engagementCount = 1 OR NULL) AS `1eng`,
COUNT(engagementCount = 2 OR NULL) AS `2eng`,
COUNT(engagementCount = 3 OR NULL) AS `3eng`,
...
FROM temporary_storage
;
或者SUM(engagementCount = value)
代替COUNT(engagementCount = value OR NULL)
。 (对我而言,后者更明确地表达了意图,因此我首先提出了它的意图,但是,如果您碰巧喜欢SUM
技术,则两者之间的性能应该没有明显差异。 here。)
你有任何代码吗? –
或者至少你的表模式? –
我有订婚表(engagement_id(auto),brandID,handle,postID,userID,engagementID,clikes,回复,内容,发布(日期时间),engagementType(喜欢,评论等))的数据库架构。我将这些数据从api获取到数据库中 – sizzyfrisky