끝 부분의 예는 내 질문에 대한 설명입니다. 어떤 도움을 주셔서 감사합니다, 감사합니다!MySQL은 여러 그룹 기준의 평균 데이터를 추출합니다.
다른 전압 및 전류 값 중에서 몇 가지 데이터 열을 포함하는 표가 있습니다.
이러한 인스턴스는 전류가 흐를 때마다 초 단위로 기록됩니다. 이 값들로부터 대략 kJ
과 kW
을 계산하고 싶습니다.
기본적으로 나는 하나 개의 테이블, instances
, 즉이 포함되어 있습니다 :
instanceID
,location
,
current
,
voltage
,
time
.
그리고 또 하나, sets
, 즉 포함
instanceID
,setID
.
instanceID
은 동일하고, 인스턴스의 instanceID
은 세트를 가리키는 FK입니다. 인스턴스의 모든 위치에 대해 약 23 행 (다양 함)이 있습니다. 30 개 지점이 있습니다. 그래서 인스턴스에 위치 1, 위치 2에 대해 동일한 인스턴스에 대해 23 개의 행이 있습니다. 시간은 측정 된 데이터가 기록 된 시간을 기록한 시간입니다 (따라서 23 개의 모든 인스턴스간에 차이가 1 초인 경우 첫 번째와 마지막 시간의 차이는 23 초입니다).
평균을 계산하려면 kW
이고 합계는 kJ
(근사치)입니다. 내가 무슨 짓을했는지
은 다음
SELECT instances.instanceID, location, current,
voltage, current * voltage AS kW,
COUNT(IF(current > 0 AND voltage > 0,
instances.instanceID,
0)) AS InstancedTime
FROM instances
INNER JOIN sets ON instances.instanceID = sets.instanceID
WHERE sets.setID = arbitrary_number;
문제는 내가 다음 표 얻을 발생
:
instanceID, location, current, voltage, kW, InstancedTime
kW
는 23 일에서 임의의 번호입니다 집합은 괜찮습니다. 어쨌든 근사값이기는하지만, COUNT(IF())
은 ALL 인스턴스를 인스턴스 테이블에서 계산합니다. 모든 위치의 인스턴스.
MAX(CAST(time AS SIGNED)) - MIN(CAST(time AS SIGNED))
을 시도하지만이
마지막 위치 뺀
첫 위치의 최소 시간에서 최대 시간이 걸립니다, 나는 한 번에 하나 개의 위치로 분리합니다.
내가 원하는 것은 총 전력에 그 시간의 kW를 곱한 시간이 될 kJ
입니다. 나는 시간이 항상 인스턴스 사이에 1 초임을 알고 있기 때문에 개별 위치에 대한 인스턴스의 수를 계산하고 kW
으로 곱하기에 충분해야하지만 모든 인스턴스에 대해 내에서 세트로 설정하고 싶습니다. 모든 개별 인스턴스에 대해 하나의 쿼리를 사용하여 세트를 대체 할 수는 있지만, 이는 곧 발생할 수 있습니다. 나는에 대한 같은 일을,
instanceID, location, current, voltage, kW, InstancedTime
1, 1, 500V, 2A, 1kW, 1s
1, 1, 500V, 2A, 1kw, 1s
1, 2, 400V, 3A, 1.2kW, 1s
1, 2, 400V, 3A, 1.2kW, 1s
2, 1, 700V, 2A, 1.4kW, 1s
2, 1, 700V, 2A, 1.4kw, 1s
2, 2, 300V, 3A, 0.9kW, 1s
2, 2, 300V, 3A, 0.9kW, 1s
과 같은 테이블을 그리고 ID 1 위치 1과 위치 2되었다는 인스턴스의 수를 요약 할 것 kJ
를 추가하기 위해 노력하고있어
같을 것이다 ID 2 모두 하나 개의 테이블이 제시 :
instanceID, location, current, voltage, kW, SumInstancedTime, kJ
1, 1, 500V, 2A, 1kW, 2s, 2kJ
1, 2, 400V, 3A, 1.2kW, 2s, 2.4kJ
2, 1, 700V, 2A, 1.4kW, 2s, 2.8kJ
2, 2, 300V, 3A, 0.9kW, 2s, 1.8kJ
이 시간 내 주셔서 감사합니다, 어떤 제공하는 도움에 감사드립니다!
이것은 정말 효과적이었습니다! 나는 당신이 제약 조건에 의해 여러 그룹을 사용할 수 있다는 것을 몰랐다. 유일하게 작동하지 않는 것은 avg_current * avg_voltage AS kW였습니다. MySQL이 두 번째 쿼리에서 계산 된 평균을 사용하는 방법을 이해하지 못하는 것 같기 때문입니다. 나는 AVG_current 대신 AVG (전류) * AVG (전압)를 사용하여 해결했다. 고마워요! – MagneTism
그것은 기뻤습니다. 언급 한 수정 내용을 반영하도록 답변을 편집 중입니다. – cfrag