데이터 및 C언어/SQL 공부

[SQL] 데이터 분석을 위한 SQL 기초 공부(6)_feat:데이터리안

  • -
반응형

 

 

 

 

 

 

[SQL] 데이터 분석을 위한 SQL 기초 공부(6)_feat:데이터리안

 

 


 

∇ 데이터 정렬하기 : ORDER BY

ORDER BY 절은 SQL에서 결과 집합을 정렬하는 데 사용됩니다.

특정 열을 기준으로 오름차순(기본값) 또는 내림차순으로 데이터를 정렬할 수 있습니다.

이를 통해 결과를 원하는 순서로 출력할 수 있습니다.

 

##입력하는 순서##

     SELECT FROM - WHERE절 - ORDER BY 

사용 시 주의사항

  1. 기본값: ASC는 생략할 수 있으며, 생략 시 기본값으로 오름차순이 적용됩니다.
  2. 여러 열: 여러 열을 지정하면, 첫 번째 열로 정렬한 후 같은 값이 있을 때 두 번째 열로 정렬합니다.
  3. NULL 처리: 데이터베이스마다 NULL 값의 정렬 순서가 다를 수 있습니다. 예를 들어, Oracle은 기본적으로 NULL 값을 최상단에 정렬하고, MySQL은 기본적으로 최하단에 정렬합니다. 데이터베이스에 따라 NULL 값을 처리하는 방법이 다를 수 있으므로 필요에 따라 NULLS FIRST 또는 NULLS LAST 키워드를 사용할 수 있습니다.
  4. 성능: 대량의 데이터에 대해 정렬 작업은 많은 리소스를 소모할 수 있으므로 인덱스 설정 등 성능을 고려해야 합니다.

 

 

 


∇ 실습 문제 풀이.

      1. Employee Names

             :    제시된 Employee 테이블에서  샘플로 제시된 Output를 뽑을 수있는 쿼리문을 작성해라.

                   [사원번호/이름/근무개월수/월급]을 제시함.

                    

                      - output을 보면, 특정 이름들 중에서 이름 첫글자의 오름차순으로 사원 명을 뽑으라는 것.

 

  ++아니 ㅈㄹ... sample대로 뽑으려고

SELECT DISTINCT name 
FROM Employee
WHERE name IN ('Angela', 'Bonnie', 'Frank', 'Joe', 'Kimberly', 'Lisa', 'Michael', 'Patrick', 'Rose', 'Todd')
ORDER BY name;

이렇게 했는데, 오류가 뜨길래 뭐지 했는데 샘플은 그냥 샘플이고 이름만 오름차순으로 뽑으면 되는거였던...

SELECT name
FROM Employee
ORDER BY name

 


      2. Employee Salaries

        동일한 테이블 Employee에서 급여가 2000달러를 넘고,근무개월수가 10개월 이하인 name 추출하기.

         추출된 이름은 사원번호의 오름차순으로 배열.

SELECT name 
FROM Employee
WHERE salary >2000 AND months < 10
ORDER BY employee_id

    


 

      3. Higher Than 75 Marks

 

  • STUDENTS 테이블에서 Marks 점수가 75점보다 높은 학생 뽑기.
  • 결과는 각 이름의 마지막 세 글자를 기준으로 오름차순으로 정렬
  • 만약 두 명 이상의 학생 이름이 같은 마지막 세 글자를 가진 경우, ID를 기준으로 오름차순으로 정렬
SELECT name 
FROM STUDENTS
WHERE Marks > 75
ORDER BY RIGHT(Name,3), ID 
  // 마지막(오른쪽) 3글자로 asc정렬하고서 id도 오름차순으로 정렬

 

 

 

 

 

       4. Weather Observation Station 15

                                 - STATION 테이블에서 137.2345보다 작은 LAT_N 중에서 가장 큰 값을 뽑고

                                 - 거기에 상응하는 LONG_W를 뽑은뒤에

                                 -  LONG_W를 소수점 4번째 자리까지 반올림해서 출력.

 

                            #방법 1.

SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N = (SELECT MAX(LAT_N) FROM STATION WHERE LAT_N < 137.2345);

 

 

                         #방법2.

SELECT ROUND(LONG_W, 4)
FROM STATION
WHERE LAT_N < 137.2345
ORDER BY LAT_N DESC
LIMIT 1;

 

 

∇ MY SQL 문자열 자르기 함수.

     √ LEFT ( 컬럼명 또는 문자열, 문자열의 길이)

             ex) SELECT LEFT("20140323",4)

                         => 2014

 

     √ RIGHT( 컬러명 또는 문자열, 문자열의 길이)

          ex) SELECT RIGHT("20140323",4)

                      => 0323

 

     √ SUBSTRING("컬럼명 또는 문자열, 시작 위치, 길이)

          = SUBSTR()

            ex) SUBSTR("20140323",1,4)

                => 2014

           ex) SUBSTR("20140323",5)   #길이 안 적으면 나머지 전부

                 => 0323

 

 

∇ MY SQL 소수점 처리.

 

         √ CEIL() 올림

                     ex) SELECT CEIL(5.5)

                           => 6

 

         √ FLOOR() 내림

                     ex) SELECT FLOOR(5.5)

                           => 5

 

        √ ROUND() 반올림

                   ex) ROUND(5.556901,4)   -몇번째자리까지 표현할건지

                             => 5.5569

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.