[英]Sql Join between two tables with a group by
我对SQL非常陌生,我一直在研究这个问题好几个小时而且我非常接近,但不是很接近:
三张桌子
cid cname
产品
pid
cid
pname
brand
price
评论
rid
userid
pid
rdate
score rcomment
我在尝试着
返回产品名称和平均分数。
返回电视类别下的产品名称,平均评分高于4.0
1:
select avg(score), review.pid
from review
join product
on review.pid = product.pid
group by review.pid;
2:
select * from product
join review
on product.pid = review.pid
where cid ='1';
您可以将pname
添加到GROUP BY
子句,然后添加到SELECT
子句。 pid
对于每个产品都是唯一的,因此它根本不会影响查询,但是您可以将名称添加到结果中。
select avg(review.score), product.pname from review join product on review.pid = product.pid group by product.pname;
在以下查询中,我使用子查询仅使用HAVING
子句选择平均得分> = 4的项目。 然后我只选择出现在子查询结果中的pid
并添加cid='1'
部分。
select product.pname from product join review on product.pid = review.pid where cid ='1' and pid IN (SELECT pid FROM review GROUP BY pid HAVING AVG(score) >= 4);
1。
select p.pname, avg(r.score)
from review r
join product p
on p.pid = r.pid
group by p.pname;
2.以下查询返回TV类别下的产品ID和平均得分大于4.0的产品名称
select p.pname, avg(r.score)
from
category c
join product p on p.cid = c.cid
join review r on r.pid = p.pid
where c.cname = 'TV'
group by
p.pname
having avg(r.score) > 4 ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.