【问题标题】:Totals Sales between an amount of time一段时间内的总销售额
【发布时间】:2019-07-29 02:00:20
【问题描述】:

编写一个 SQL 查询,确定并显示从 2015 年初到 2018 年底所售商品的总价格(Total Sales)。使用单引号提供聚合别名。

我可以在没有日期的情况下提取总销售额。我不知道如何指定我只想要 2015 年到 2018 年之间的总销售额

 Select sum(item.ItemPrice) as `Total Sales`
 from customer, petshop_order, petshop_order_item, item
 where petshop_order.order_date between `2015-01-01` and `2018-12-31`
 And (customer.ssn=petshop_order.ssn
 And petshop_order.OrderNo = petshop_order_item.OrderNo
 And petshop_order_item.SKU=item.SKU);

错误代码:'where 子句'中的 1054 未知列 '2015-01-01'

【问题讨论】:

  • 改用DATE('2015-01-01')DATE('2018-12-31')
  • 从不FROM 子句中使用逗号。 始终使用正确、明确、标准JOIN语法。

标签: sql mysql-workbench


【解决方案1】:

使用单引号 ' 代替反引号,即 ` 与日期输入。用单引号更新您的查询,它应该可以工作。

【讨论】:

    【解决方案2】:

    您的查询似乎比需要的复杂得多。您正在引用似乎没有必要的表:

    select sum(i.ItemPrice) as Total_Sales
    from petshop_order po join
         petshop_order_item poi
         using (OrderNo) join
         item i
         using (SKU)
    where po.order_date >= '2015-01-01' and
          po.order_date < '2019-01-01';
    

    注意事项:

    • 使用正确、明确、标准 JOIN 语法。
    • 不需要customer 表。
    • 表别名使查询更易于编写和阅读。
    • 注意使用不等式进行日期比较。这比 between 更安全,因为该代码适用于有和没有时间组件的日期。
    • 请注意,我重命名了 Total_Sales,因此不需要对列别名进行转义。

    哦,这解决了单引号的问题。

    【讨论】:

    • 谢谢你,我知道它很糟糕......但是它是如何在课堂上教给我们的
    • @Logan 。 . .你的课程应该更新到 21 世纪。 JOIN 可能是在许多学生出生之前就被引入的。
    • @Gordan 在我攻读管理专业之前,我从来没有上过这样的课……我只需要满足研究生的要求,我假设教授认为这更容易,但谁知道呢。对不起,它太糟糕了,但我非常感谢您的帮助。
    猜你喜欢
    • 2013-11-24
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    相关资源
    最近更新 更多