You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

统计含指定字符串行数并聚合:按用户统计点赞/关注活动数

修正后的用户行为统计SQL

嘿,我注意到你想统计每个用户的「功能点赞」和「功能关注」次数,但当前的查询语句可能没法得到预期结果——因为count()函数会统计所有非NULL的值,哪怕是0也会被算进去,这样最后得到的其实是每个用户的总活动数,而不是符合条件的次数。

正确的查询语句

我们可以用SUM()配合CASE WHEN来实现精确统计,这个写法在所有SQL数据库中都通用:

SELECT 
  USER,
  SUM(CASE WHEN Activity LIKE '%liked%' THEN 1 ELSE 0 END) AS LikedActivity,
  SUM(CASE WHEN Activity LIKE '%followed%' THEN 1 ELSE 0 END) AS FollowedActivity
FROM db.Table
GROUP BY USER;

如果你的数据库支持布尔值直接转换为数值(比如MySQL、PostgreSQL),也可以简化成更简洁的写法:

SELECT 
  USER,
  SUM(Activity LIKE '%liked%') AS LikedActivity,
  SUM(Activity LIKE '%followed%') AS FollowedActivity
FROM db.Table
GROUP BY USER;

为什么原来的写法不对?

原来的count(Activity LIKE '%liked%')中,Activity LIKE '%liked%'会返回TRUE或FALSE(对应数值1或0),但这两个值都不是NULL,所以count()会把每一行都计入统计,结果就变成了每个用户的总活动次数,而不是我们想要的点赞/关注次数。

测试你的示例数据

用你给出的3条数据测试正确语句,会得到如下结果:

USERLikedActivityFollowedActivity
User120
User201

内容的提问来源于stack exchange,提问作者scorpion5211

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:27:39