programing

에러 코드: 1235.이 버전의 MariaDB는 아직 '창 함수로 카운트(DISTINCT) 집계'를 지원하지 않습니다.

prostudy 2022. 9. 9. 08:39
반응형

에러 코드: 1235.이 버전의 MariaDB는 아직 '창 함수로 카운트(DISTINCT) 집계'를 지원하지 않습니다.

나는 마리아 위에 다음 테이블을 가지고 있다.DB:

date              name

2018-01-02        John
2018-01-03        Mary
2018-01-05        Peter
2018-01-06        John
2018-01-07        Ann
2018-01-08        Ann
2018-01-09        John
2018-01-10        Peter

그리고 매일 누적_name_count를 계산하고 싶습니다.즉, 다음과 같은 결과를 기대하고 있습니다.

date        cumulated_name_count

2018-01-02        1
2018-01-03        2
2018-01-04        2
2018-01-05        3
2018-01-06        3
2018-01-07        4
2018-01-08        4
2018-01-09        4
2018-01-10        4

이를 위해 저는 다음과 같은 window 기능을 가진 코드를 사용하고 있습니다.

select date, 
  count(distinct name) over (order by time rows unbounded preceding) 
  as cumulated_name_count from myDB.myTable

그러나 다음과 같은 오류가 발생했습니다.

Error Code: 1235. This version of MariaDB doesn't yet support 'COUNT(DISTINCT) aggregate as window function'

이러한 오류를 방지하고 윈도우 함수를 통해 누적 카운트를 얻을 수 있는 방법이 있습니까?감사합니다!

이는 중첩된 창 기능을 사용하여 수행할 수 있습니다.

select date, 
       sum( seqnum = 1 ) over (order by time rows unbounded preceding)
              as cumulated_name_count
    from (select  t.*,
                  row_number() over (partition by name order by time)
                        as seqnum
              from myDB.myTable t
         ) t2;

서브쿼리에는 각각이 열거되어 있습니다.name시간별 가치그런 다음 외부 쿼리는 각 레코드까지 "1"의 수를 카운트합니다.

언급URL : https://stackoverflow.com/questions/51828513/error-code-1235-this-version-of-mariadb-doesnt-yet-support-countdistinct-a

반응형