Oracle 대 Maria의 분석 기능DB
현재 내 오라클 쿼리를 MariaDB 10.4로 마이그레이션하는 중
저는 분석 기능에 어려움을 겪고 있습니다.
MARIADB 코드:
select cgi, timestamp, hour, rat_type, dl_tput,
ntile(24) over (partition by timestamp,rat_type order by dl_tput) as dl_tput_ntiled
from (select cgi, date(timestamp) as timestamp,
date_format(timestamp,'%H') as hour, rat_type, avg(avg_mean_down) as dl_tput
from JUST_TEST_A
where avg_mean_down is not null
group by cgi, date(timestamp),date_format(timestamp,'%H'),rat_type
) x ;
이 코드는 정상적으로 작동하지만 Oracle 출력의 유효성을 검사한 결과 MariaDB의 결과와 다릅니다(동일한 데이터).
내 오라클 스크립트에는 mariadb에서 제거한 스크립트가 있습니다.
select cgi, timestamp, hour, rat_type, dl_tput,
ntile(24) over (partition by timestamp,rat_type order by dl_tput) as dl_tput_ntiled,
count(*) over () as dl_tput_cnt
from (...)
한다count(*) over ()
출력에 영향을 미칩니까?이 분석 기능의 MariaDB에 대한 대체 쿼리는 무엇입니까?
이 데모에서는 다음과 같이 설명합니다.
https://dbfiddle.uk/ ?rdbms=message_11.2&message=be74a9fa9059d6b80a8cb10d102355d4
몇 가지 데이터를 입력하고 쿼리가 있는 작은 예를 찾을 수 있습니다.
select pk
, a
, b
, ntile(24) over (partition by a, b order by pk)
, count(*) over () as dl_tput_cnt
from t1;
왼쪽 상단 모서리에는 선택할 수 있는 다양한 데이터베이스 목록이 있습니다.이 예에서 Oracle을 선택하거나 Maria DB를 선택한 경우 결과는 동일합니다.이는 다음과 같은 보장이 아닙니다.count
그리고.ntile
귀하의 다양한 결과에 대한 책임은 없지만 이 결과에 대해 자세히 알려 주십시오.
그러나 출력을 검증한 결과 Oracle의 결과가 MariaDB의 결과와 다릅니다(동일한 데이터).
아마도 이것이 당신의 경우에 더 도움이 될 것입니다.
한가지 더요.
이 쿼리에 대해 Maria DB에서 얻은 결과를 확인해야 한다고 생각합니다.
SELECT date(timestamp) FROM JUST_TEST_A
SELECT date_format(timestamp,'%H') FROM JUST_TEST_A
또한 date 및 date_format에 대한 오라클의 동등한 함수에 대해 오라클에서 받은 이전 결과와 비교합니다.
저는 이것이 넥타이의 문제라고 생각합니다.ntile()
에서는 각 버킷의 크기가 동일해야 하므로 그룹이 동일한 행을 서로 다른 버킷에 걸쳐 분할합니다.
극단적인 예로, 만약 모든 값이dl_tput
동일한 값이면 1부터 24까지의 모든 값을 할당할 수 있습니다.
언급URL : https://stackoverflow.com/questions/59774820/analytical-function-of-oracle-vs-mariadb
'source' 카테고리의 다른 글
전체 버전 트리 git 보기 (0) | 2023.08.17 |
---|---|
javax.validation.constraint의 주석이 작동하지 않습니다. (0) | 2023.08.17 |
MySQL 선택 쿼리에서 사용할 인덱스를 힌트로 제공하는 방법은 무엇입니까? (0) | 2023.08.12 |
Angular2 - '라우터 출구'가 알려진 요소가 아닙니다. (0) | 2023.08.12 |
텍스트 표시: 줄임표가 작동하지 않습니다. (0) | 2023.08.12 |