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
파티션 효과를 달성하기 위해 수행해야 했던 두 가지 주요 변경 사항을 확인할 수 있습니다.
기본 테이블(
tbl)는 하위 선택에 다음과 같이 포함됩니다.ORDER BY절MySQL이 다음을 수행할 때 필요하기 때문입니다.@account변수 검정 값을 이미 주문해야 합니다.이렇게 하지 않으면 계정 값뿐만 아니라 합계 값도 잘못 표시됩니다.별칭이 지정된 '추가' 열이 있습니다.
as _결과를 사용할 때는 이 열을 무시할 수 있지만 다음 순서는@account확인 및 변경은 다음 이후여야 합니다.@sum확인하고 변경합니다.또한 이 기능을 사용하면 계정이 마지막인 경우 열을 다시 정렬하도록 선택할 수 있습니다.이 작업은 첫 번째 항목을 제거하여 수행됩니다.
account마지막 열과 중복되므로 열_열을 표시한 후 별칭을 분명히 변경했습니다._로.account.
리소스:
- http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
- https://stackoverflow.com/a/2563940/263175
아니요, MSSQL, Oracle, Postgre와 같은 다른 DBMS와 비교할 때 MySQL의 주요 부족 요소 중 하나입니다.SQL. 앞으로 MySQL에서 Window Functions를 볼 수 있을지 의문입니다. 특히 Oracle이 MySQL을 인수한 후에는...
2018년 4월 업데이트
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
'programing' 카테고리의 다른 글
| 역할 환경을 호출할 때 SHE 예외가 발생하는 이유는 무엇입니까?구성 설정 값("MYKEY")을 가져오시겠습니까? (0) | 2023.07.16 |
|---|---|
| SQL에서 ON 절과 using 절의 차이 (0) | 2023.07.16 |
| 임시 테이블에서 필드 이름을 검색하는 방법(SQL Server 2008) (0) | 2023.07.16 |
| 마이크로서비스 롤백 방법 (0) | 2023.07.16 |
| SOL_SOCKET의 용도는 무엇입니까? (0) | 2023.07.16 |