描述:
a、现有文章信息表TB_A,一个文章分享记录表TB_B,一个文章访问记录表TB_C。
b、文章信息表有字段:ARTICLE_ID、TITLE、CONTENT
c、分享记录表有字段:分享人ID(SHARE_ID)、文章ID(ARTICLE_ID)、分享对象USER_ID
d、访问记录表有字段:访问人ID(VIEW_ID)、文章ID(ARTICLE_ID)
问题:
求出所有文章信息的列表和每篇文章的分享量和访问量的SQL。不能使用TITLE和CONTENT分组,因为这两个字段有可能是空或者是重复,若是仅以ID分组该如何写SQL? 示例结果:
ARTICLE_ID,TITLE,CONTENT,shareNm,viesNm
WZ001, 活着 xxxxx, 510, ,400
WZ002, 围城 xxxxx, 360, ,300
由于数据多对一问题,不能在一起group统计,需要各自单独统计,才能得出准确数字
select a.*,shareNum,viewNum
from tb_a
left join (
select article_id,count(0) shareNum
from tb_b
group by article_id
) b on a.article_id=b.article_id
left join (
select article_id,count(0) viewNum
from tb_c
group by article_id
) c on a.article_id=c.article_id
参考chatGPT
SQL语句:
SELECT a.ARTICLE_ID, a.TITLE, a.CONTENT, COUNT(b.SHARE_ID) AS shareNm, COUNT(c.VIEW_ID) AS viewNm
FROM TB_A a
LEFT JOIN TB_B b ON a.ARTICLE_ID = b.ARTICLE_ID
LEFT JOIN TB_C c ON a.ARTICLE_ID = c.ARTICLE_ID
GROUP BY a.ARTICLE_ID, a.TITLE, a.CONTENT
不知道你这个问题是否已经解决, 如果还没有解决的话: