반응형
데이터가 현재 값보다 낮은 값을 갖는 데이터 선택
데이터가 있다
user indeks_sum sks_sum year
2000 76 21 20191
2000 NULL 21 20192
2012 12 24 20191
2012 NULL 8 20192
2042 21 16 20191
2042 NULL 9 20192
2069 8 2 20191
2069 4 1 20192
예상되는 결과:
user indeks_sum sks_sum year
2000 76 21 20191
2000 76 42 20192
2012 12 24 20191
2012 12 32 20192
2042 21 16 20191
2042 21 25 20192
2069 8 2 20191
2069 12 3 20192
indeks_sum
그리고.sks_sum
매회 증가하다year
해봤다
select * user,sum(indeks_sum) as indeks_sum, sum(sks_sum) as sks_sum, year
from ips
where year <= year
group by user,year
결과는 그대로입니다.
잘 부탁드립니다
MySQL/MariaDB 버전이 지원하는 경우 창 함수를 사용할 수 있습니다. 창 합계에 적합한 사용 사례입니다.
select
user,
sum(indeks_sum) over(partition by user order by year)) indeks_sum,
sum(sks_sum) over(partition by user order by year) sks_sum,
year
from ips
order by user, year
user | index_sum | sks_sum | year---: | ---------: | ------: | ----:2000 | 76 | 21 | 201912000 | 76 | 42 | 201922012 | 12 | 24 | 201912012 | 12 | 32 | 201922042 | 21 | 16 | 201912042 | 21 | 25 | 201922069 | 8 | 2 | 201912069 | 4 | 3 | 20192
이전 버전에서는 관련 서브쿼리를 사용한1가지 접근방식을 다음에 나타냅니다.
select
i.user,
(select sum(i1.indeks_sum) from ips i1 where i1.user = i.user and i1.year <= i.year) indeks_sum,
(select sum(i1.sks_sum) from ips i1 where i1.user = i.user and i1.year <= i.year) sks_sum,
i.year
from ips i
order by i.user, i.year
퍼포먼스를 위해서, 다음의 인덱스를 고려해 주세요.(user, year, indeks_sum)
또 다른 것은(user, year, sks_sum)
.
언급URL : https://stackoverflow.com/questions/60672715/select-data-where-data-have-value-below-current-value
반응형
'programing' 카테고리의 다른 글
오류 UnicodeDecodeError: 'utf-8' 코덱이 0의 바이트 0xff를 디코딩할 수 없습니다. 잘못된 시작 바이트입니다. (0) | 2022.12.29 |
---|---|
JavaScript 루프에 지연을 추가하려면 어떻게 해야 하나요? (0) | 2022.12.29 |
--skip-grant-tables로 MySQL을 시작하는 방법 (0) | 2022.12.29 |
Maria를 사용한 워터라인/Sails.js 대량 삽입 및 삭제DB (0) | 2022.12.29 |
MySQL match() again() - 관련성과 컬럼에 따른 순서? (0) | 2022.12.29 |