그룹 값은 0까지 SQL(maria DB)에 시간을 기준으로 저장하고 카운트와 함께 합계를 수행합니다.
나는 변수(고유 키)에 대해 15분 간격으로 데이터가 저장된 SQL 테이블을 가지고 있습니다.값은 0을 포함한 각 시간 간격에 대한 임의의 숫자일 수 있습니다.고유 키에 대해 0까지 값을 그룹화하려고 합니다.
예를 들어, 값이 0,0,100,900,30,0,0,0,400,900,100,0,0,0,0,400,500,0,0,0,0,0,0,0,0,0,0과 같이 각 고유 키에 대해 0까지 값을 추가하고 값이 0이 아닌 인스턴스 수(이 경우 3 등)를 카운트하려고 했습니다.
시간(15분 간격) 대비 SQL(mariaDB)에 저장된 데이터가 있습니다.이제 이 데이터는 엔티티의 성능을 결정합니다. 즉, 이 데이터는 초당 15분 간격 내에서 0부터 900까지의 모든 값을 취할 수 있는 문제가 있습니다.이제 모든 시간 간격 기간에 대해 그룹화하고 영향을 받은 총 초를 쉽게 플롯할 수 있습니다.
Parameter_health Database에 두 개의 테이블이 포함되어 있습니다.
- parameter_detail 테이블에는 매개 변수에 대한 고정 데이터 정보가 포함되어 있습니다.
- parameter_uasvalue 테이블에는 해당 매개 변수에 대한 시간에 대해 15분 간격으로 사용할 수 없는 초(UAS)가 포함되어 있습니다.
함께 그룹화된 총 UAS의 전체 합계인 아래와 같은 SQL 쿼리를 사용했지만 다음 0 값까지 그룹화하고 모든 간격에 대해 해당 이벤트의 총 인스턴스(0이 아닌 이벤트가 아닌 총 인시던트)도 계산하려고 합니다.
Grafana에서 아래 쿼리 사용
SELECT parameter_detail.system, parameter_detail.parameter_label, sum(parameter_uasvalue.uas) as 'Total UAS'
FROM parameter_health.parameter_uasvalue left join parameter_health.parameter_detail on parameter_detail.id=parameter_uasvalue.id
WHERE $__timeFilter(parameter_uasvalue.time) and parameter_uasvalue.uas != '-1' and parameter_uasvalue.uas !=' 0'
GROUP BY parameter_detail.system, parameter_detail.parameter_label
각 값을 0(합계 실행)까지 그룹화한 다음 SQL 쿼리의 모든 시간 간격에 대해 해당 인스턴스를 카운트하려고 했습니다.parameter_uasvalue 테이블의 테이블 구조는 아래와 같습니다.
id time uas
Parameter-Unique Value1 15/11/2021 0:00 0
Parameter-Unique Value1 15/11/2021 0:15 100
Parameter-Unique Value1 15/11/2021 0:30 900
Parameter-Unique Value1 15/11/2021 0:45 30
Parameter-Unique Value1 15/11/2021 1:00 0
Parameter-Unique Value1 15/11/2021 1:15 0
Parameter-Unique Value1 15/11/2021 1:30 400
Parameter-Unique Value1 15/11/2021 1:45 900
Parameter-Unique Value1 15/11/2021 2:00 0
Parameter-Unique Value1 15/11/2021 2:15 0
Parameter-Unique Value1 15/11/2021 2:30 0
Parameter-Unique Value1 15/11/2021 2:45 400
Parameter-Unique Value1 15/11/2021 3:00 500
Parameter-Unique Value1 15/11/2021 3:15 0
Parameter-Unique Value1 15/11/2021 3:30 0
Parameter-Unique Value1 15/11/2021 3:45 0
이것은 일종의 격차와 섬 문제입니다.첫 번째 공정 및 그룹parameter_uasvalue
데이터 후 결합Parameter_detail
.
SELECT d.system, d.parameter_label, seriesStart, s, nonzc
from (
select id, min(time) seriesStart, sum(uas) s, count(case when uas > 0 then uas end) nonzc
from (
select id, time, uas, sum(flag) over(partition by id order by time) grp
from (
select id, time, uas, (coalesce(lag(uas, 1) over(partition by id order by time),0) = 0 and uas != 0) flag
from parameter_health.parameter_uasvalue t
where $__timeFilter(time) and uas != -1
-- it will break series detection
-- and uas != 0
) t
) t
group by id, grp
) t
left join parameter_health.parameter_detail d on d.id=t.id
order by d.system, d.parameter_label, seriesStart;
언급URL : https://stackoverflow.com/questions/70120582/group-values-stores-against-time-in-sql-maria-db-until-zero-and-do-a-summation
'programing' 카테고리의 다른 글
typedef-name은 typedef 선언에서 선택 사항입니까? (0) | 2023.09.03 |
---|---|
MySQL에서 Java/Hibernate에서 BigDecimal을 어떤 유형으로 매핑하시겠습니까? (0) | 2023.09.03 |
UIColor를 CGColor로 신속하게 변환 (0) | 2023.09.03 |
동위원소와 Masonry jQuery 플러그인의 차이점 (0) | 2023.09.03 |
Oracle SQL Developer의 Excel 날짜 필드 가져오기 문제 (0) | 2023.09.03 |