MySQL과 창 함수


30

MySQL창 기능을 지원하지 않는 것 같습니다 .
예를 들어 간단합니다 : COUNT(*) OVER() AS cnt작동하지 않습니다.
확실하지 않은 것은 이것이 상용 버전에도 적용되는지 여부입니다 (커뮤니티 버전이 제한된 하위 집합이라고 가정합니다).
그렇지 않은 경우이 누락 된 기능을 어떻게 해결합니까?


3
MySQL 서버의 커뮤니티 에디션은 의미있는 의미에서 제한된 하위 집합이 아닙니다. 차이점은 핵심 기능에 영향을 미치지 않는 애드온 및 플러그인에 있습니다.
Michael-sqlbot

이 대안을 여기여기
StuartLC

실제로 MySQL9는이를 지원합니다. 나는 어떤 종류의 짜증 대신 팬더를 사용하고 있습니다.
앤드류 스콧 에반스

1
MySQL 8은 윈도우 기능을 지원합니다. : 참고로 dev.mysql.com/doc/refman/8.0/en/window-functions.html
gvgvgvijayan

MySQL은 8.0 이후의 창 기능을 지원합니다. 이 링크 가 도움 이 될 수 있습니다.
Hamid Mohayeji

답변:


36

MySQL은 Window Functions (*)를 지원하지 않습니다. GROUP_CONCAT () 형식으로 "가난한 창 함수"라고 부릅니다 .

GROUP_CONCAT창 기능을 에뮬레이트 하는 데 사용 하는 많은 트릭이 있습니다. 그들은 (구문 적으로) 예쁘지 않고 때로는 너무 제한적입니다. 나는 몇 가지를 썼다. 누락 된 창 기능에 대해 불평 하고 다양한 솔루션으로 링크하는 내 블로그 게시물을 참조하십시오 GROUP_CONCAT.

특히, GROUP BYSQL 에서 특정 집계되지 않은 열 데이터 선택 : 그룹당 상위 N 개의 레코드를 선택하면 다른 솔루션 이 유용 할 수 있으며 킥 스타트를 제공 할 수 있습니다.

주의해야 할 사항 GROUP_CONCAT():

  • 사용할 수 있습니다 DISTINCT
  • 사용할 수 있습니다 ORDER BY ... ASC/DESC
  • 설정할 수 있습니다 SEPARATOR
  • 집계 함수로서 NULL 값을 버립니다. 그것에 많은 트릭.

(*) 윈도우 기능 지원이 MySQL 8에 추가되었습니다


MySQL은 버전 8
최대

GROUP_CONCAT는 윈도우 함수가 아니며, 순서가 설정된 함수입니다.
SQLRaptor

1
@SQLRaptor 아무도 주장하지 않았습니다.
ypercubeᵀᴹ

11

MariaDB 10.2 (2017 년 5 월에 릴리스 됨)에는 창 기능이 있습니다. MySQL과 윈도우 기능이 필요한 경우 반드시 추구해야 할 길입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.