취 합 함수 대신 SQL 의 창 열기 함수 에 대한 자세 한 설명 을 사용 할 수 있 습 니 다.
창문 을 여 는 함 수 는 집합 함수 와 마찬가지 로 줄 의 집합 그룹 을 집합 하여 계산한다.이것 은 줄 에 창 을 정의 하 는 데 사 용 됩 니 다.(이 창 은 연산 할 줄 의 집합 을 말 합 니 다)그룹 값 을 조작 합 니 다.group by 문 구 를 사용 하여 데 이 터 를 그룹 으로 나 눌 필요 가 없습니다.같은 줄 에서 기본 줄 의 열 과 집합 열 을 동시에 되 돌 릴 수 있 습 니 다.정 의 를 못 알 아 봐 도 괜찮아,쓸 줄 알 면 돼.
간단 한 예 를 들 어 각 급여 가 5000 이하 인 직원 정보(이름,도시 연령 급여)를 조회 하고 5000 이하 의 직원 개 수 를 표시 하 며 다음 문 구 를 사용 해 보 세 요.
SELECT FName, FCITY, FAGE, FSalary, COUNT(FName) FROM T_Person WHERE FSALARY<5000
메시지 8120,레벨 16,상태 1,첫 줄목록 에 있 는 열 선택'TPerson.FName'이 잘못 되 었 습 니 다.이 열 은 집합 함수 나 GROUP BY 자구 에 포함 되 어 있 지 않 기 때 문 입 니 다.
하위 검색 을 사용 하여 구현 할 수 있 습 니 다.
SELECT FName, FCITY, FAGE, FSalary, ( SELECT COUNT(FName) FROM T_Person WHERE FSALARY<5000 ) PersonNum FROM T_Person
WHERE FSALARY<5000
결과:창 을 여 는 함수 로 이 루어 집 니 다.조회 결과 가 똑 같 으 면 붙 이지 않 습 니 다.
SELECT FName, FCITY, FAGE, FSalary, COUNT(FName) OVER() as PersonNum FROM T_Person
WHERE FSALARY<5000
1.창 열기 함수 형식:함수 명(열)OVER(옵션)2.취 합 창 함수 형식:취 합 함수(열)OVER(PARTITION BY 필드)
over 키 워드 는 취 합 함 수 를 취 합 함수 가 아 닌 취 합 창 함수 로 생각 합 니 다.SQL 표준 은 모든 취 합 함 수 를 취 합 창 함수 로 사용 할 수 있 습 니 다.오 버 키워드 뒤의 괄호 에는 취 합 연산 을 하 는 창의 범 위 를 바 꾸 기 위해 옵션 을 자주 추가 합 니 다.만약 OVER 키워드 뒤의 괄호 가 비어 있다 면,창 을 여 는 함 수 는 결과 집합의 모든 줄 을 취 합 연산 합 니 다.
PARTITION BY 는 줄 의 파 티 션 을 정의 하여 취 합 연산 을 합 니 다.group by 와 달리 partition by 자구 가 만 든 파 티 션 은 결과 집합 에 독립 되 어 있 습 니 다.만 든 파 티 션 은 취 합 연산 에 만 사용 되 고 서로 다른 창문 함수 가 만 든 파 티 션 은 서로 영향 을 주지 않 습 니 다.예 를 들 어 모든 사람의 정 보 를 조회 합 니 다.그리고 소속 도시 의 인원 수 와 같은 연령 의 인원 수 를 조회 합 니 다.
SELECT FName,FCITY, FAGE, FSalary, COUNT(FName) OVER(PARTITION BY FCITY) CityNum,
COUNT(FName) OVER(PARTITION BY FAGE) AgeNum FROM T_Person ORDER by FCITY
모든 인원 의 정 보 를 조회 하고 소속 도시 의 인원 수 를 조회 하 며 각 도시 의 사람들 은 연령 에 따라 문 구 를 배열 한다.
SELECT FName,FCITY, FAGE, FSalary, COUNT(FName) OVER(PARTITION BY FCITY ORDER BY FAGE) CityNum FROM T_Person
3.정렬 창 열기 함수 형식:정렬 함수()OVER(ORDER BY 필드)
(1)주요 함 수 는 ROWNUMBER()、RANK()、DENSE_RANK()、NTILE()
ROW_NUMBER()에 줄 번 호 를 추가 하면 페이지 별로 조회 할 수 있 습 니 다(현재 offset). fetch 대체)홈 키 열 이 없 는 표 에 줄 번 호 를 추가 하 는 역할 이 뚜렷 하고 중복 데 이 터 를 삭제 합 니 다.
월급 의 높 고 낮 음 에 따라 모든 인원 에 게 순 위 를 매 길 수 있 습 니 다.같은 월급 의 순위 가 다 르 면 row 를 사용 할 수 있 습 니 다.number(),
with a as
(
SELECT FName, FSalary, FCity, FAge, ROW_NUMBER() over(ORDER BY FSalary) as RowNum FROM T_Person
)
SELECT * FROM a
rank()를 사용 하여 각 도시 의 월급 순 위 를 같은 순위 로 두 개의 1 위 가 나 올 때 두 개의 1 위 뒤에 있 는 순 위 는 3 위 가 될 것 이다.
SELECT FName, FSalary, FCity, FAge, RANK() over(PARTITION BY FCITY ORDER BY FSalary) as RankNum FROM T_Person
dense 사용rank()는 각 도시 의 월급 순 위 를 같은 순위 로 두 개의 1 위 가 나 올 때 두 개의 1 위 뒤에 있 는 순 위 는 3 위 가 될 것 이다.
ntile(숫자)over(orderby 필드):숫자 는 한 그룹의 몇 개 수 를 나타 내 고 수량 에 따라 그룹의 수량 을 나 타 냅 니 다.
SELECT *,NTILE(5) OVER(ORDER BY FSalary) AS NileNum FROM T_Person
총결산
취 합 함수 대신 사용 할 수 있 는 SQL 의 창 열기 함수 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 SQL 창 열기 함수 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.