[SQL - HackerRank] Advanced Select

jyleever·2022년 8월 21일
0

SQL

목록 보기
4/4

1. more-than-75-marks
75점보다 높은 점수를 받은 학생의 이름 조회
각 이름의 마지막 세 문자로 정렬
만약 중복된 경우가 있다면 id 오름차순 정렬

SELECT NAME
FROM STUDENTS
WHERE MARKS > 75
ORDER BY RIGHT(NAME, 3), ID ASC;

MySQL에서 문자열에 일부분을 가져오는 함수 3가지

  • LEFT : 문자에 왼쪽을 기준으로 일정 갯수를 가져오는 함수
  • MID : 문자에 지정한 시작 위치를 기준으로 일정 갯수를 가져오는 함수
  • RIGHT : 문자에 오른쪽을 기준으로 일정 갯수를 가져오는 함수
    (MID 함수는 SUBSTR과 SUBSTRING 함수의 동의어)

LEFT(문자, 가져올 갯수)
MID(문자, 시작 위치, 가져올 갯수)
-- 또는 SUBSTR(문자, 시작 위치, 가져올 갯수)
-- 또는 SUBSTRING(문자, 시작 위치, 가져올 갯수)
RIGHT(문자, 가져올 갯수)

2. what-type-of-triangle
3가지 변 길이를 이용한 TRIANGLES 테이블의 각 레코드의 타입을 결정하는 SELECT문 작성
Equilateral: It's a triangle with sides of equal length.
Isosceles: It's a triangle with sides of equal length.
Scalene: It's a triangle with sides of differing lengths.
Not A Triangle: The given values of A, B, and C don't form a triangle.

SELECT
    CASE
        WHEN A + B <= C OR A + C <= B OR B + C <= A THEN 'Not A Triangle'
        WHEN A = B AND B = C THEN 'Equilateral'
        WHEN A = B OR B = C OR C = A THEN 'Isosceles'
        ELSE 'Scalene'
    END
FROM TRIANGLES;

case - when - then 문

CASE
	WHEN 조건
	THEN '반환 값'
	WHEN 조건
	THEN '반환 값'
	ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END
  • WHEN과 THEN은 한쌍이어야 한다
  • WHEN과 THEN은 다수가 존재할 수 있다
  • ELSE가 존재하면 모든 조건에 해당하지 않는 경우에 반환 값을 설정할 수 있다
  • ELSE가 존재하지 않고, 조건에 맞지 않아서 반환 값이 없으면 NULL를 반환한다

0개의 댓글