본문 바로가기
공부기록/SQL

SQL_1

by 행복별거있나요 2023. 7. 6.

DISTINCT : 중복제거

 

MOD(m,n) : m을 n으로 나눈 나머지를 반환

                    EX)SELECT DISTINCT ID

                          FROM STATION 

                          WHERE MOD(ID,2)= 0 

 

 [짝수]_SELECT * FROM TABLE_NAME

             WHERE MOD(INDEX, 2) = 0

 [홀수]_SELECT * FROM TABLE_NAME

             WHERE MOD(INDEX, 2) = 1

 

ROW_NUMBER() : 결과 집합의 파티션 내 각 행에 순차적인 정수를 할당하는 윈도우 

                               행의 번호는 각 파티션에 대해 1번부터 할당

                               정렬의 중복 값이 있어도 서로 다른 정수를 할당

 

LEN: 문자열 길이 

 

OVER() :ORDER BY, GROUP BY 서브쿼리를 개선하기 위해 나온 함수

             :쿼리를 짧게 만들어준다.

 

 

!!Weather Observation Station 5_STATION의 두 도시에 각각의 길이(예: 이름의 문자 수)뿐만 아니라 가장 짧고 긴 도시 이름을 쿼리

                                                          두 개 이상의 가장 작거나 큰 도시가 있는 경우, 알파벳 순으로 정렬할 때 가장 먼저 오는 도시 선택

SELECT CITY, LEN

  FROM (

        SELECT CITY,

        LENGTH(CITY) LEN,

        ROW_NUMBER() OVER(ORDER BY LENGTH(CITY), CITY) as RN_MIN,

        ROW_NUMBER() OVER(ORDER BY LENGTH(CITY) DESC, CITY) as RN_MAX

        FROM STATION

       )

 WHERE (RN_MIN = 1 OR RN_MAX = 1)

 ORDER BY LEN; !!

 

LIKE :해당 알파벳으로 시작하는 단어 찾는 함수

_WHERE(CITY LIKE 'A%'

      OR CITY LIKE 'E%'

      OR CITY LIKE 'I%'

      OR CITY LIKE 'O%'

      OR CITY LIKE 'U%');

 

SUBSTRING

SELECT DISTINCT city

FROM Station

WHERE substring(city, -1) IN ('a','e','i','o','u')

(_Station 테이블에서 city 이름의 마지막 글자가 모음(a,e,i,o,u)인 목록을 출력

_중복 금지)

->정규표현식

SELECT distinct city

FROM Station

WHERE city REGEXP '.*[aeiou]$'

  1. .* : 앞에는 어떤 문자열이 와도 상관없다
  2. [aeiou]$ : 끝글자가 aeiou에 포함될 때의 조건

 

맨 끝글자를 제외한 처음부터 모든 글자는 어떻게 가져오나?_select substr('일이삼', -1) from dual

 

^[^aeiou] : 모음으로 시작하지 않는 문자열 찾기

[^aeiou]$ : 모음올  끝나지 않는 문자열 찾기

 

STATION에서 모음으로 끝나지 않는 CITY 이름 목록을 쿼리합니다. 결과에 중복 항목을 포함할 수 없습니다.

->SELECT DISTINCT CITY

FROM STATION

WHERE RIGHT(CITY,1) NOT IN ('A','E','I','O','U')

 

스테이션에서 모음으로 시작하지 않거나 모음으로 끝나지 않는 CITY 이름 목록을 쿼리합니다. 결과에 중복 항목을 포함할 수 없습니다.

SELECT DISTINCT CITY

FROM STATION

WHERE  LEFT(CITY,1) NOT IN ('A','E','I','O','U')

            OR RIGHT(CITY,1) NOT IN ('A','E','I','O','U')

 

STATION에서 모음으로 시작하지 않고 모음으로 끝나지 않는 CITY 이름 목록을 쿼리합니다. 결과에 중복 항목이 포함될 수 없습니다.

SELECT DISTINCT

    CITY

FROM

    STATION

WHERE

    LEFT(CITY,1) NOT IN ('A','E','I','O','U')

    AND RIGHT(CITY,1) NOT IN ('A','E','I','O','U')