微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编写查询以显示过去 1 年收到的每月明智的总销售额

如何解决编写查询以显示过去 1 年收到的每月明智的总销售额

Table Structure编写查询显示过去 1 年收到的每月明智的总销售额。显示销售月份、总销售额等详细信息。为检索到的销售月份提供一个 alias_name 作为 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)

解决方法

我不会为您做功课,但这里列出了您的查询中目前缺少的内容:

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

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

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

,

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

,

你很接近。您缺少的是 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".

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

,

答案是:

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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。