Mysql 计算包含特定字符串和聚合的行数
我的数据库中有以下一组行:Mysql 计算包含特定字符串和聚合的行数,mysql,sql,Mysql,Sql,我的数据库中有以下一组行: USER | ACTIVITY 'User1' | 'User1 liked FeatureX' 'User1' | 'User1 liked FeatureY' 'User2' | 'User2 followed FeatureX' 我想运行执行以下操作的查询: select User, count(Activity like '%liked%') as LikedActivity, count(Activity like
USER | ACTIVITY
'User1' | 'User1 liked FeatureX'
'User1' | 'User1 liked FeatureY'
'User2' | 'User2 followed FeatureX'
我想运行执行以下操作的查询:
select User,
count(Activity like '%liked%') as LikedActivity,
count(Activity like '%followed%') as FollowedActivity
from db.Table
group by USER
换句话说:我想为每个用户检索“功能喜欢”和“功能跟随”的数量。在这里使用
SUM
和CASE
表达式:
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;
我们也可以在这里使用COUNT
,这将导致一个更整洁的查询:
SELECT
User,
COUNT(CASE WHEN Activity LIKE '%liked%' THEN 1 END) AS LikedActivity,
COUNT(CASE WHEN Activity LIKE '%followed%' THEN 1 END) AS FollowedActivity
FROM db.Table
GROUP BY User;
啊,我明白了!!非常好,谢谢!两者之间有什么性能差异吗?@Gio我认为两者的性能差异很小。您可以对两个查询运行
EXPLAIN
,以查看差异。