我怎样才能在sql oracle中解决这个问题?

时间:2017-04-17 13:19:21

标签: oracle oracle11g

这是我正在学习的书中没有解决的练习。 目标是找到每月销售额最高的卖家, 在有注册信息的所有月份。问题是我不知道如何将元组分成一个月的时间。

第一张表是:

Table Sellers

Id_seller
Name_Product

另一个是:

Table Product

Name_Product
View_datetime
Budget

我做了什么?

我提出了这个问题:

SELECT id_seller FROM(SELECT id_seller, COUNT(id_seller)
FROM SELLERS INNER JOIN PRODUCT
ON SELLERS.name_product = PRODUCT.name_product
GROUP BY id_seller HAVING COUNT(id_seller)>= 1
ORDER BY 2 DESC)
WHERE ROWNUM = 1;

查询返回给我的销售商大部分销售已经完成,但不是"因为有记录"正如声明所要求的那样。有任何想法吗?我迷路了...

这个想法是将本月每个销售员(sysdate)的总销售额与两个月前的一个月前的销售额进行比较......只要有较旧的记录。并从每个卖家获得最大值。然后您使用上一个列表中的更多销售打印卖家。如果卖家本月销售400件产品(4月份,sysdate),但去年10月卖出的另一件卖家500件,结果将是第二卖家。这就是我不知道该怎么做。

谢谢^^

2 个答案:

答案 0 :(得分:0)

您可以尝试此查询

nvl

答案 1 :(得分:0)

有几点要做......

  • 桌子很奇怪。我认为您的表sellers最好称为sales,对吗?
  • 在此示例中,having count... >= 1是无操作。如果根本没有行,则Count只能为0,在这种情况下,group-by输出中不会有行。你可以在这里留下这个数字。
  • 要获得每月的销售额,只需将月份添加到group by即可。即group by id_seller, To_date(view_datetime,'YYYYMM')