关于如何在ORACLE中使用此SQL代码的建议

关于如何在ORACLE中使用此SQL代码的建议,sql,oracle,Sql,Oracle,你的老板只想看看每年最后一个季度的数据。所有年份都将被选定。执行以下查询,但仅选择每年最后3个月的数据这是我迄今为止的代码,但我很难选择每年最后3个月的数据: SELECT Extract(YEAR from orderdate) as year, Extract(MONTH from orderdate) as month, COUNT(*) as numorders, COUNT(DISTINCT customerid) as numcust, SUM(totalprice

你的老板只想看看每年最后一个季度的数据。所有年份都将被选定。执行以下查询,但仅选择每年最后3个月的数据这是我迄今为止的代码,但我很难选择每年最后3个月的数据:

SELECT Extract(YEAR from orderdate) as year,
   Extract(MONTH from orderdate) as month,
   COUNT(*) as numorders, COUNT(DISTINCT customerid) as numcust,
   SUM(totalprice) as totspend,
   SUM(totalprice)*1.0/COUNT(*) as avgordersize,
   SUM(totalprice)*1.0/COUNT(DISTINCT customerid) as avgcustorder

FROM dw.orders o
GROUP BY Extract(YEAR from orderdate),
     Extract(MONTH from orderdate)
ORDER BY 1, 2;

您需要减少返回的行数,这意味着您需要一个
WHERE
子句。您还需要将日期转换为表示其季度的值,或者从该日期派生一年中的第四季度。我推荐前者:

where to_char(orderdate,'Q') = '4'

除了@Allen的答案外,您还可以在(10,11,12)中使用类似于
WHERE Extract(从orderdate开始的月份)的内容,以保持语法/逻辑与现有内容相似。

尝试添加
WHERE
子句。还有,请尽量让家庭作业不那么明显。只是当它是家庭作业的时候,感觉很不对劲。@jnevil这不是家庭作业,这些是我试图在这方面做得更好的书中的问题,这让我感觉更好!