2014-12-06 3 views
0

나는 내 머리를 감쌀 수없는 문제에 직면하고있다. 그래서 내가 해결할 수 있도록 도와 줄 수있을 것이다.? 표는 여러 세대 (아파트) 그들이 여러 주택에 대한 초당 전력 소비 측정을 보유하고SQL - 마지막 값으로 모든 가구 선택

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 쿼리를 만드는 데 1)의 목록을 사용하고 싶습니다. 값은 누적되어 최신 날짜 시간이 가장 높은 값을 유지합니다. 각 가구에 대한 총 가치 (SUM) (해당 가구의 모든 플러그의 합), 즉 총 전기 소비량이있는 가구 목록이 필요합니다.

이것도 가능합니까? 저는 SQL Server 2012를 사용하고 있으며 테이블의 행은 100.000.000입니다.

+0

(1) 샘플 데이터에 대해 원하는 결과를 제공하십시오. (2) "household_id"의 ​​모호한 의미를 분명히하십시오. 그 이름의 칼럼인가요? 아니면 주택과 가구수의 조합입니까? –

+0

Household_id는 열 이름입니다. – David

답변

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; 
+0

이것은 내가 원하는 것입니다. 당신의 도움을 주셔서 감사합니다. – David

0

설명에 따르면이 쿼리를 사용할 수 있다고 생각합니다. select house_id,household_id, max(value), sum(value) from your_table_name group by house_id,household_id

관련 문제