programing

mysql은 오라클의 "분석 기능"과 동등합니까?

telebox 2023. 7. 16. 13:16
반응형

mysql은 오라클의 "분석 기능"과 동등합니까?

다음과 같은 분석 기능을 찾고 있습니다.PARTITION BYMySQL(자세한 내용은 문서 참조)

분석 함수는 행 그룹을 기반으로 집계 값을 계산합니다.각 그룹에 대해 여러 행을 반환한다는 점에서 집계 함수와 다릅니다.

존재합니까?

MySQL의 변수를 사용하여 분석 기능을 모방할 수 있습니다.예를 들어 SUM OVER는 다음과 같이 수행할 수 있습니다.


SELECT amount, 
    @sum := @sum + amount as sum 
FROM tbl
JOIN (SELECT @sum := 0) s

원하신다면PARTITION BY가능하지만 조금 더 복잡할 뿐입니다.기본적으로, 당신은 다른 것을 추가합니다.@variable계정(또는 파티션 분할)을 확인하고 계정(또는 변수)별로 주문한 다음 다시 설정합니다.@sum계좌가 변경될 때다음과 같습니다.


SELECT account, 
    amount, 
    (case when @account != account then @sum := amount else @sum := @sum + amount end) as sum,
    (case when @account != account then @account := account else @account end) as _
FROM (SELECT * FROM tbl ORDER BY account)
JOIN (SELECT @sum := 0) s
JOIN (SELECT @account := '') a

파티션 효과를 달성하기 위해 수행해야 했던 두 가지 주요 변경 사항을 확인할 수 있습니다.

  1. 기본 테이블(tbl)는 하위 선택에 다음과 같이 포함됩니다.ORDER BYMySQL이 다음을 수행할 때 필요하기 때문입니다.@account변수 검정 값을 이미 주문해야 합니다.이렇게 하지 않으면 계정 값뿐만 아니라 합계 값도 잘못 표시됩니다.

  2. 별칭이 지정된 '추가' 열이 있습니다.as _결과를 사용할 때는 이 열을 무시할 수 있지만 다음 순서는@account확인 및 변경은 다음 이후여야 합니다.@sum확인하고 변경합니다.

    또한 이 기능을 사용하면 계정이 마지막인 경우 열을 다시 정렬하도록 선택할 수 있습니다.이 작업은 첫 번째 항목을 제거하여 수행됩니다.account마지막 열과 중복되므로 열_열을 표시한 후 별칭을 분명히 변경했습니다._로.account.

리소스:

아니요, MSSQL, Oracle, Postgre와 같은 다른 DBMS와 비교할 때 MySQL의 주요 부족 요소 중 하나입니다.SQL. 앞으로 MySQL에서 Window Functions를 볼 수 있을지 의문입니다. 특히 Oracle이 MySQL을 인수한 후에는...

2018년 4월 업데이트

MySQL 8.0은 이제 창 기능을 지원합니다.

MySQL은 분석 기능을 지원하지 않지만 MariaDB는 지원합니다.MySQL의 드롭인 대체 버전이며 MySQL의 원래 개발자들에 의해 만들어졌습니다.

SQL Server에 대한 상용 제품이 있는데, 이 제품은 'linked servers'를 통해 오라클 또는 MySQL 데이터베이스에 연결할 수 있습니다. 이를 설명하는 기사는 다음과 같습니다. http://westclintech.com/Blog/tabid/132/EntryId/88/Using-XLeratorDB-with-MySQL-and-other-RDBMS-s.aspx

이를 위해서는 Windows os 및 SQL Server 2005 이상(Express 버전은 무료)이 필요합니다.

언급URL : https://stackoverflow.com/questions/11806528/does-mysql-have-the-equivalent-of-oracles-analytic-functions

반응형