我有表 meter_readings
的列:id
,date_taken
,kwh
。
我正在尝试将列中的两行相减kwh
,然后将结果放入一个名为的别名中consumption
。
我正在使用:
SELECT id, kwh COALESCE(kwh-(SELECT kwh FROM meter_readings WHERE id= id+1), kwh) AS consumption
FROM meter_readings;
我在消费别名中得到的内容与原始别名一样简单kwh
:
id date_taken kwh consumption
1 2013-01-01 4567.89 4567.89
2 2013-01-08 4596.71 4596.71
3 2013-01-15 4607.89 4607.89
我想要的是:
id date_taken kwh consumption
1 2013-01-01 4567.89 0
2 2013-01-08 4596.71 28.11
3 2013-01-15 4607.89 11.18
所以id 1 = 0,因为这是第一个date_taken kwh读数,因此不需要消耗值。这试图计算一年中每周的千瓦时消耗量。
只需为表名指定一个别名,然后在相关子查询中为表指定一个不同的别名即可。像这样的东西:
SELECT
m1.id,
m1.kwh,
COALESCE(m1.kwh - (SELECT m2.kwh
FROM meter_readings AS m2
WHERE m2.id = m1.id + 1),
m1.kwh) AS consumption
FROM meter_readings AS m1;
这将为您提供:
| ID | KWH | CONSUMPTION |
------------------------------
| 1 | 4567.89 | 1141.18 |
| 2 | 3426.71 | 1181.37 |
| 3 | 2245.34 | 2245.34 |
对于更新的样本数据,只需WHERE m2.id = m1.id - 1
在相关子查询中使用with,COALESCE(..., 0)
这样第一个将为0。如下所示:
SELECT
m1.id,
date_format(m1.date_taken, '%Y-%m-%d') AS date_taken,
m1.kwh,
COALESCE(m1.kwh - (SELECT m2.kwh
FROM meter_readings m2
WHERE m2.id = m1.id - 1), 0) AS consumption
FROM meter_readings m1;
这将为您提供:
| ID | DATE_TAKEN | KWH | CONSUMPTION |
-------------------------------------------
| 1 | 2013-01-01 | 4567.89 | 0 |
| 2 | 2013-01-08 | 4596.71 | 28.82 |
| 3 | 2013-01-15 | 4607.89 | 11.18 |
问题内容: 在Python中,如何减去两个非唯一的无序列表?假设我们有和我想这样做,并有成为或顺序无关紧要给我。如果a在b中不包含所有元素,则应该抛出异常。 请注意,这与套装不同! 我对找到a和b中的元素集的差异不感兴趣,而对a和b中元素的实际集合之间的差异感兴趣。 我可以使用for循环来执行此操作,在a中查找b的第一个元素,然后从b和a中删除该元素,依此类推。但这对我没有吸引力,这会非常低效(按
问题内容: 我需要能够对两个带注释的列进行汇总 所以我想做这样的事情: 接着: 有谁知道如何完成上述工作? 问题答案: 其实, 从Django 1.8开始 就可以正常工作了。 此外,您还可以按表达式排序,这意味着您可以使用: 甚至只是:
问题内容: 我有两个arrayLists,我试图从另一个中“减去”一个arrayList。例如,如果我有一个arrayList [1,2,3],而我试图减去[0,2,4],则结果arrayList应该为[1,3]。 这是我的代码。 我的代码在某些情况下可以正常工作,例如if ,它将给我的结果。但是,如果我尝试像和 我得到这个异常: 这是我想出的代码。我已经通过它进行了测试,对我来说我认为它应该起作
问题内容: 我的df如下所示: 我想从每个国家的Val1中减去Val10,所以输出如下: 到目前为止,我已经: runDeltas导致此错误: 解决此问题的正确方法是什么? 问题答案: 给定以下数据框: 它归结为一个简单的广播操作):
问题内容: 我已经迷上了一些SQL,其中有几行数据,我想从上一行中减去一行,并使其一直向下重复。 所以这是表格: 我希望结果显示第三列,称为差异,即从下面的一列减去第一行,最后一行从零减去。 我已经尝试过自我连接,但是我不确定如何限制结果,而不是让结果不断循环。我不能确定id值对于给定的结果集是连续的,所以我不使用该值。我可以扩展架构以包括某种顺序值。 这是我尝试过的: 谢谢您的协助。 问题答案:
问题内容: 我要执行的操作类似于合并。例如,通过合并,我们得到一个数据帧,其中包含第一个AND第二个数据帧中存在的行。通过合并,我们得到一个数据帧,该数据帧在第一个或第二个数据帧中都存在。 我需要的是一个数据帧,其中包含第一个数据帧中存在的行而第二个数据帧中不存在的行?有快速而优雅的方法吗? 问题答案: 如下所示呢? 只要有一个非关键的通用命名列,就可以让在sufffexes上执行的工作(如果没有