我需要计算标记工作量,计算每个标记器添加的标记数量,每篇文章的最大标记数= 5个标记。
例如:
表格结构article_tags
id user_id article_id tag_id
1 1 1 1
2 1 1 2
3 1 2 1
4 2 3 1
5 2 3 2
是否有限制使用Group by或类似的东西? THX,
更新
我需要返回添加到文章中的标签数量,单个文章最多5个(所以如果有人为30篇文章添加了30个标签= 30
答案 0 :(得分:7)
这是你想要的吗?
select user_id, least(count(*), 5)
from article_tags
group by user_id;
编辑:
我认为您需要两个级别的聚合:
select article_id, sum(cnt) as restricted_tag_count
from (select user_id, article_id, least(count(*), 5) as cnt
from article_tags
group by user_id, article_id
) ua
group by article_id;
答案 1 :(得分:0)
SELECT USER_ID,ARTICAL_ID,if(count(*)>5,5,count(*)) as tags
from article_tags group by USER_ID,ARTICAL_ID;
答案 2 :(得分:0)
您可以尝试这样的事情: -
SELECT user_id, CASE WHEN COUNT(tag_id) <= 5 THEN COUNT(tag_id)
ELSE 5 END AS TOTAL_TAGS
FROM YOUR_TABLE
GROUP BY user_id
希望这有帮助。
答案 3 :(得分:0)
基于&#39; Gordon Linoff&#39;
的解决方案SQL查询:
select t.user_id,sum(t.total_tags) total
from
(
select user_id, least(count(*), 5) total_tags
from article_tags
group by user_id,article_id
) t
group by t.user_id
THX,