SQL查询单个表中的比较报告

问题描述 投票:0回答:1

SQL Newb在这里,我在理解这个问题时遇到了一些麻烦。如何编写单个SELECT语句,在其中可以使列具有自己的WHERE子句,进行计算并将结果分组。我可以编写查询来汇总总数,并按收入中心和会计年度对平均值进行分组检查,但我不太了解如何与单个查询进行比较。

SALES DATA
| RevenueCenter | FiscalYear | TotalSales | NumChecks |
|---------------|------------|------------|-----------|
|  market       |    2019    |  2000.00   |    10     |
|  restaurant   |    2019    |  5000.00   |    25     |
|  restaurant   |    2020    |  4000.00   |    20     |
|  market       |    2020    |  3000.00   |    10     |
COMPARE REPORT
| RevenueCenter | TotalSales2020 | TotalSales2019 | %Change | AvgCheck2020 | AvgCheck2019 | %Change |
| market        |   3000.00      |   2000.00      |  +50%   |    300.00    |    200.00    |   +50%  |
| restaurant    |   4000.00      |   5000.00      |  -20%   |    200.00    |    200.00    |     0%  |
sql oracle
1个回答
0
投票

这会有所帮助吗?没什么大不了,只是一些算法的自我结合。

SQL> with sales (revenuecenter, fiscalyear, totalsales, numchecks) as
  2  -- sample data
  3    (select 'market'    , 2019, 2000, 10 from dual union all
  4     select 'market'    , 2020, 3000, 10 from dual union all
  5     select 'restaurant', 2019, 5000, 25 from dual union all
  6     select 'restaurant', 2020, 4000, 20 from dual
  7    )
  8  -- query you need
  9  select a.revenuecenter,
 10    b.totalsales totalsales2020,
 11    a.totalsales totalsales2019,
 12    --
 13    (b.totalsales/a.totalsales) * 100 - 100 "%change totalsal",
 14    --
 15    b.totalsales / b.numchecks avgcheck2020,
 16    a.totalsales / a.numchecks avgcheck2019,
 17    --
 18    (b.totalsales / b.numchecks) /
 19    (a.totalsales / a.numchecks) * 100 - 100 "%change numcheck"
 20  from sales a join sales b on a.revenuecenter = b.revenuecenter
 21    and a.fiscalyear < b.fiscalyear;

REVENUECEN TOTALSALES2020 TOTALSALES2019 %change totalsal AVGCHECK2020 AVGCHECK2019 %change numcheck
---------- -------------- -------------- ---------------- ------------ ------------ ----------------
market               3000           2000               50          300          200               50
restaurant           4000           5000              -20          200          200                0

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.