假设我有包含以下列的表格
1. Client - string.
2. Profit - integer.
3. Deal_Date - date.
我需要查询来检索按周/月/季度等划分的利润明细总额。
几周的预期产出
1 row, sum (profit) of all deals that registered from (03.19.2012 - 03.12.2012).
2 row, sum (profit) of all deals that registered from (03.12.2012 - 03.05.2012).
...
n row, sum (profit) of all deals that registered from (05.17.2011 - 05.10.2011).
注意(日期设置仅供引用)
月份、年份等相同。
有人可以帮我解决这样的问题吗?
顺便说一句,性能非常重要。
最佳答案
此查询使用简单的日期格式来提取您想要跟踪和分析的各种元素以获取总和。
select client
, yr
, qtr
, wk
, sum ( profit ) over ( partition by client, yr) as yr_profit
, sum ( profit ) over ( partition by client, yr, qtr) as qtr_profit
, sum ( profit ) over ( partition by client, yr, wk) as wk_profit
from (
select client
, profit
, to_char(deal_date, 'yyyy') as yr
, to_char(deal_date, 'q') as qt
, to_char(deal_date, 'ww') as wk
from your_table )
/
这将为当前表中的每一行生成一行。因此,您可能希望将其包装在仅返回不同行的进一步外部查询中。
一种变体是使用汇总。我不确定当分组标准不完全分层时效果如何(周不能完全适合季度)。
select client
, yr
, qtr
, wk
, sum ( profit ) as profit
from (
select client
, profit
, to_char(deal_date, 'yyyy') as yr
, to_char(deal_date, 'q') as qt
, to_char(deal_date, 'ww') as wk
from your_table )
group by rollup ( client, yr, qtr, wk )
/
关于sql - 查询中按周/按月/按季度分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9769127/