这是我table:
我想获取包含ServiceDescription“Plaster”或Skills“Plaster”或在类别“Plaster”中的那些供应商的记录,并且还想计算这些供应商的平均值。
注:如果没有对任何供应商进行审查,那么也应该有记录。
这是我的疑问:
select * from UserDetails u
,VendorInCategory v
,CategoryMaster c
,Review rv
where v.CategoryId=c.Id
and u.Id=r.UserId
and u.Id=rv.VendorId
and v.VendorId=u.Id
and ((u.ServiceDescription like '%Plaster%' )
or (u.Skills like '%Plaster%')
or (c.Name like '%Plaster%'))
这里的问题在上面的查询是我没有得到的供应商的审查是不存在的。
但我也希望供应商不包含审查,但符合我的标准。
用户详细信息:
id Servicedescription Skills
1 Plaster plaster
2 construction construvtion
3 plaster plaster
4 null null(not vendor)
5 null null(not vendor)
检阅
id CustomerId Vendorid rating
1 4 1 3
2 5 1 3
预期输出:
VendorId ServiceDescription Skills averagerating
1 plaster plaster 3
3 plaster plaster 0
注:最终输出应按平均评分降序排列
3条答案
按热度按时间dgsult0t1#
来试试这个
样本数据
溶液
bq9c1y662#
许多用户使用AVERAGE函数来计算一系列数据的平均值。但是,当您有汇总数据而不是单个答复,并且需要计算平均值时,该怎么办呢?(例如,在5分评级尺度(如产品评级)上选择每个评级的人数计数。)
如何计算加权平均值
假设您想要取得每项产品的平均整体评分:
使用AVERAGE函数将得到平均值7.7。当然,这没有任何意义。我们应该期望平均值在标度范围(1到5)内。
为了正确计算每个问题的平均总体回答,我们需要:
1.将选择每个评分的人数乘以相应的评分值(1 - 5)
1.将这些计算结果加在一起。
1.将结果除以问题的回答总数。
样本数据:
解决方案:
结果:
ssgvzors3#
使用聚合函数AVG():
试试这个:
编辑
实现此功能的其他解决方案: