0

我认为在我的旧帖子上很难找到我的编辑,所以我做了一个新的主题:

在如此快速地解决了这个问题之后,我试着玩了一下 SQL 训练。现在我尝试与之前一样,而不是国家/地区,我想要在那里的“类别”(之前的帖子是关于进行查询,在那里我可以看到美国和世界其他地区的销售净额数据库中的 2007 年和 2008 年,现在我尝试使用以字母“A”开头的年份和类别)当我尝试进行这样的查询时,我完全迷失在其中 Oo 我想我需要显示实体事先:(越线=表名)

  • 类别


  • 类别

  • 分类名称

  • 产品


  • 产品编号

  • 类别
  • 标题
  • 演员
  • 价格

  • 订单线


  • 订单号

  • 订单号
  • 普罗迪德

  • 订单


  • 订单号

  • 订购日期
  • 客户ID
  • 净额

到目前为止我的查询:(它背后绝对没有意义:/)

SELECT year(orderdate) AS YEAR,
       categoryname,
       sum(custamot)Totsales FROM
  (SELECT o.orders, sum(netamount) custamot, c.categoryname
   FROM products o
   JOIN categories c ON o.category = c.category
   WHERE categoryname LIKE 'A%'
   GROUP BY c.categoryname) iv
GROUP BY YEAR(orderdate);
4

1 回答 1

0

您根本不需要子查询。只需加入您需要的所有表并为您的聚合编写一个合适的 group by 子句。你最终会得到类似的东西:

SELECT YEAR(o.orderdate) AS YEAR,
       c.Categoryname,
       SUM(o.netamount) AS Totsales
FROM orders o
INNER JOIN orderlines ol ON ol.orderid = o.orderid
INNER JOIN Products p ON p.ProdID = ol.Prodid
INNER JOIN categories c ON c.Category = p.Category
WHERE c.Categoryname LIKE 'A%'
GROUP BY c.Categoryname, YEAR(o.orderdate);
于 2013-04-02T08:40:15.920 回答