我正在比较不同年份同一周的销售额。 就像2010年和2011年的第一周一样。通过我的查询,我得到了这样的结果。

week|year|sales
1   |2010|5
1   |2011|10
2   |2010|7
2   |2011|13

我的查询如下所示:

SELECT
min(x.id) AS id,
week as week,
year,
COUNT(*) AS amount,
SUM(price_unit) AS price
FROM (
   SELECT
   so.id as id,
   DATE_PART('week',  so.date_order) AS week,
   DATE_PART('year',  so.date_order) AS year,
 sol.price_unit
 FROM 
sale_order AS so
INNER JOIN sale_order_line AS sol ON sol.order_id = so.id
WHERE so.date_order BETWEEN '2010-01-01' AND '2011-12-31' 
) AS x
GROUP BY
week,
year

我想做的是减去不同年份的相同周数,以得出销售差异。 就像week2011-week2010,结果应该是这样

week|year     |difference
 1  |2011-2010|5
 2  |2011-2010|6

我只是不知道该如何减去:)

===============>>#1 票数:1

要获得两年之间的差额,请尝试以下操作:

SELECT
week as week,
'2011-2010' as year,
sum(case calcyear when 2011 then 1 else -1 end) AS amount,
sum(case calcyear when 2011 then price_unit else -1*price_unit end) AS price
FROM (
   SELECT
   so.id as id,
   DATE_PART('week',  so.date_order) AS week,
   DATE_PART('year',  so.date_order) AS calcyear,
 sol.price_unit
 FROM 
sale_order AS so
INNER JOIN sale_order_line AS sol ON sol.order_id = so.id
WHERE so.date_order BETWEEN '2010-01-01' AND '2011-12-31' 
) AS x
GROUP BY
week

  ask by Tatsuo translate from so

未解决问题?本站智能推荐:

2回复

SQL:从具有特定值的连续行中减去

我有一个像下面这样的表: 我想要做的是从下一行中减去“计数”,如果ID相同,则日期与当前行具有相同的值,并且时间大于值(例如+1)。 所以我想得到的新表有这样的布局: 正如您所看到的那样,只有具有相同ID的行,每天和时间差为1。
3回复

减去不同表的两列

我有两个不相关的表: 我需要从用户中减去贡献和求知的总和,但是结果不能为负。 我怎样才能做到这一点? 功能还是查询? 我试过这个查询:
1回复

SQL:复杂查询,其中减去了不同的单元格

我有两个表,我想合并它们的数据。 第一张桌子 第二张表是: 因此,我想做的是查找所有处于特定半径范围内且在下一小时内比当前拥有更多签到位置的公司。 所以结果是 因为他们在接下来的一个小时内将比前一个小时签到更多(6> 5,8> 4) 更重要的
1回复

从同一张表中提取两个查询

假设我有2个表:表device是一组测量设备,表data是一组由设备测量的不同类型的值。 我目前有一个查询,该查询将获取由id在特定日期生成的特定value_type的所有值的总和,例如: 该查询工作正常。 现在,我希望能够减去不同值类型的总和。 我当前正在做的是两个查询,一
2回复

MySQL从列中减去两行并放入别名

我的表meter_readings包含列: id , date_taken , kwh 。 我正在尝试将kwh列中的两行相减,然后将结果放入一个名为consumption的别名中。 我正在使用: 我所得到的消耗别名很简单,与原始kwh相同: 我想要的是: 所以
1回复

根据日期和小时从同一张表中减去两行

我想加入两个表。 表A 表B 我想像这样加入他们: 表C 我已经尝试过CROSS Join和其他类型的联接,但是无法使其工作。 到目前为止,我研究了其他相关问题: SQL根据日期和另一列减去两行 从同一表中选择两行
1回复

从MySQL当前行上方的行中减去值

我有下表: 我需要对整个表执行此操作: 结果= 1,if(current_row(出生日期)-row_above_current_row(死亡日期))> X else 0 为了使事情变得容易,我想我在上面创建了相同的表,但有2个额外的id字段:id_minus_one和
1回复

SQL从行中减去变量

有没有办法减去变量并将该变量的其余部分用于MS-SQL中的下一列 基本上我想做的是从var1-3中减去一个特定值并按顺序开始播放这些值 之前: 样本1 - 我会得到减去600 样本2 - 减去我得到的750 样本3-减去900我会得到 “0”的字段可以
1回复

如何对同一行的时间值求和/相减

我想求和减去两个或更多的时间戳列。 我正在使用PostgreSQL,并且您可以看到一个结构: 我无法舍入分钟或秒,所以我尝试提取EPOCH并在之后进行操作,但是由于第一个EXTRACT识别该列,但总是出现错误,但是当我将第二个EXTRACT放在同一SQL中时命令我收到一条错误消息,
1回复

用上一行(第-1天)的值减去最近一行的值

我有一张桌子,每天都有增量值。 我想用上一行(第-1天)的值减去最新行的值 例如,这将是完美的: 但是,我将需要应用DIFF函数而不是SUM函数。