我遇到了一个无法解决问题的问题,所以也许你可以帮我解决一下!
我有一张桌子:
id | datetime | property | house_id | household_id | plug_id | value
---+--------------------+----------+----------+--------------+---------+--------
1 |2013-08-31 22:00:01 | 0 | 1 | 1 | 1 | 15
2 |2013-08-31 22:00:01 | 0 | 1 | 1 | 3 | 3
3 |2013-08-31 22:00:01 | 0 | 1 | 2 | 1 | 21
4 |2013-08-31 22:00:01 | 0 | 1 | 2 | 2 | 1
5 |2013-08-31 22:00:01 | 0 | 2 | 1 | 3 | 53
6 |2013-08-31 22:00:02 | 0 | 2 | 2 | 4 | 34
7 |2013-08-31 22:00:02 | 0 | 1 | 1 | 1 | 16
...
该表格显示了多个住宅中有多个住户(公寓)的房屋每秒耗电量。每个家庭都有多个电插头。所有房屋或住户都没有唯一的ID,但是由house_id和household_id组合标识。
1)我需要一个SQL查询,它可以为我提供所有独特住户的清单。
2)我想使用1)中的列表创建一个SQL查询,该查询为我提供了每个家庭的最高值列表(该值是累积的,因此最新的日期时间保持最高值)。我需要每个家庭的总价值(SUM)(该家庭中所有插头的总和),即一个家庭的总耗电量列表。
这甚至可能吗?我使用的是SQL Server 2012,该表有100.000.000行。
答案 0 :(得分:1)
如果我理解正确,您需要value
的最高值之和,用于住宅/家庭/插头组合。这可能会做你想要的:
select house_id, household_id, sum(maxvalue)
from (select house_id, household_id, plug_id, max(value) as maxvalue
from consumption
group by house_id, household_id, plug_id
) c
group by house_id, household_id;
答案 1 :(得分:0)
根据你的描述,我认为你可以使用这个查询;
select house_id,household_id, max(value), sum(value) from your_table_name group by house_id,household_id