【问题标题】:Write a query to display the total month wise sales amount received in the past 1 year编写查询以显示过去 1 年收到的月销售额总额
【发布时间】:2021-08-03 01:30:06
【问题描述】:

Table Structure编写查询以显示过去 1 年收到的月销售额总额。显示销售月份、总销售额等详细信息。为检索到的销售月份提供别名名称为 MONTH,为销售额提供 TURN_OVER。按金额降序对结果进行排序。

(提示:使用表 Sales_info。使用 to_char 检索月份。净额用于计算销售额。使用 sysdate 计算过去 1 年的销售额。数据区分大小写。)

我编写的代码正在获取我所有年份的销售数据。

select to_char(Sales_Date,'Month')"MONTH"
Net_Amount as Turn_Over
from Sales_Info
where Sales_Date= add_months(Sysdate,-12)

【问题讨论】:

  • 通常,给出一个表结构是有帮助的。
  • 添加表结构@DavidLee
  • 显示的查询不能返回所有年份,因为add_months 是一个标量函数,只有一个日期可能等于特定日期
  • How do I ask and answer homework questions?。你有什么确切的问题?如何选择特定年份?如何按月显示输出?如何将日期格式化为月份名称?请在作业问题上更具体
  • @AishwaryaPulaskar 。 . .您的代码是 Oracle 代码,所以我将标签更改为 Oracle。

标签: sql oracle where-clause date-formatting


【解决方案1】:

select to_char(Sales_Date,'MON')"MONTH", Net_Amount 为 TURN_OVER 来自 Sales_Info 其中 Sales_Date > add_months(Sysdate,-12) 按 Net_Amount desc 排序;

【讨论】:

    【解决方案2】:

    我不会为你做作业,但这里列出了你的查询中目前缺少的内容:

    • SELECT 列表中的逗号
    • 您需要大于,而不是等于,因为您希望所有日期都“超过一年前”
    • 您需要将数据分成组,每个组具有相同的月份,并且您需要汇总该月的所有数据,因此您的查询中需要包含 GROUP BY 和 SUM 这两个词。。李>

    我编写的代码正在获取我所有年份的销售数据

    不,目前的查询只会为您提供一年前恰好在当前日期时间发生的销售,这可能是 0 条记录

    【讨论】:

      【解决方案3】:

      你很接近。您缺少的是 GROUP BY 和摘要功能:

      select to_char(Sales_Date, 'Month') as "MONTH"
             SUM(Net_Amount) as Turn_Over
      from Sales_Info
      where Sales_Date= add_months(Sysdate, -12)
      group by to_char(Sales_Date, 'Month');
      

      请注意,查询仍然存在一些重大问题。例如,我真的不喜欢在你正在做的事情中使用月份名称。它遗漏了年份。实际上,上面的查询是要结合当前月份和去年同月的数据。

      我会改为完成个月。并改用trunc()

      select trunc(Sales_Date, 'MON') as "MONTH"
             SUM(Net_Amount) as Turn_Over
      from Sales_Info
      where Sales_Date = add_months(trunc(Sysdate, 'MON'), -12) and
            Sales_Date < trunc(sysdate, 'MON')
      group by to_char(Sales_Date, 'Month')
      order by "MONTH".
      

      在真实环境中,这通常会提供更清晰、更有用的结果。另外,因为第一列实际上是日期,所以很容易排序。

      【讨论】:

        【解决方案4】:

        答案是:

        Select to_char(Sales_Date , 'MON' ) as "MONTH" , sum(Net_Amount) as TURN_OVER 
        from Sales_Info
        where Sales_Date > add_months(Sysdate , -12) 
        group by to_char(Sales_Date , 'MON')
        order by TURN_OVER desc;
        

        【讨论】:

          猜你喜欢
          • 2016-03-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多