![]() |
1
5
认为此查询符合您的预期:
解释
您尝试使用
|
![]() |
2
2
当前查询中的HAVING子句提取的行的价格大于平均价格 仅针对该行 . 单个数字的平均值等于该数字,因此不会返回任何行。 您可以通过将HAVING子句更改为ITEMS来测试这一点。PRICE=AVG(ITEMS.PRICE)-这将返回所有行。 窗口函数对于这种查询很方便。下面的OVER子句指定AVG_PRICE将平均值应用于给定制造商和项目类型的所有行。
您可能还想查阅有关 window/analytic functions in Oracle . |
|
3
1
假设您不总是希望只返回“UWZ”和“BACKPACK”的记录,您可以使用下面的查询,该查询使用子查询(派生表)。它建立在史蒂夫·钱伯斯回答中解释的相同原则上,所以我不再重复解释。 您可以取消注释WHERE子句中的附加条件以返回原始答案。
|
![]() |
4
0
您需要将查询更改为以下内容:
如果你想保留
查询未返回任何结果的原因是
根据我的收集,你正在寻找那些比
您可以通过以下方式自行检查:
结果:
|
![]() |
5
0
您的分组依据
对于要显示的每一行
然后是你的having条款:
你提到的4858.014444的平均价格是表中所有记录的平均价格。因此,您想选择价格高于此价格的所有记录UWZ/BACKPACK记录吗?
尽管你把所有产品的平均价格与之相比,这似乎很奇怪。与所有背包相比,这似乎更自然。为了做到这一点,您必须将此条件添加到子查询中。 |