Revising the Select Query 1

링크

CITY 테이블로부터 인구(Population)가 100000보다 많고, 국가코드(CountryCode)가 USA인 모든 데이터들을 조회.

SELECT * FROM CITY WHERE POPULATION > 100000 AND COUNTRYCODE = 'USA';

Revising the Select Query 2

링크

CITY 테이블로부터 인구(Population)가 120000보다 많고, 국가코드(CountryCode)가 USA인 모든 이름(Name)들을 조회.

SELECT NAME FROM CITY WHERE POPULATION > 120000 AND COUNTRYCODE = 'USA';

Weather Observation Station3

링크

STATION 테이블에서 ID값이 짝수인 CITY 칼럼을 조회 (단, 중복된 값은 제외)

SELECT DISTINCT CITY FROM STATION WHERE MOD(ID, 2) = 0; 

Weather Observation Station4

링크

STATION 테이블에서 도시명(CITY)의 총 개수와, 중복된 도시명(CITY)을 제외한 개수의 차이값을 구할 것.

SELECT (COUNT(CITY) - COUNT(DISTINCT CITY))
FROM STATION;   

Weather Observation Station5

링크

STATION 테이블에서 가장 긴 도시 이름과 가장 짧은 도시 이름과 각각의 길이를 구하라.
만약 가장 긴 이름을 가지거나 가장 짧은 이름을 가진 도시가 여러개라면 알파벳 순으로 선택했을 때 먼저 나오는것을 구하라.

SELECT * FROM (
    SELECT CITY, LENGTH(CITY)
    FROM STATION
    ORDER BY LENGTH(CITY) DESC, CITY ASC
    ) 
WHERE ROWNUM = 1;

SELECT * FROM (
    SELECT CITY, LENGTH(CITY)
    FROM STATION
    ORDER BY LENGTH(CITY) ASC, CITY ASC
    ) 
WHERE ROWNUM = 1;

Weather Observation Station6

링크

STATION 테이블에서 도시이름(City)이 모음으로 시작하는것만 조회.
중복없이 출력할 것.

SOL1)

SELECT DISTINCT CITY 
FROM STATION
WHERE UPPER(SUBSTR(CITY, 1, 1)) IN ('A', 'E', 'I', 'O', 'U');

SOL2)

SELECT DISTINCT CITY 
FROM STATION
WHERE REGEXP_LIKE(CITY, '^[AaIiEeOoUu]');

Weather Observation Station7

링크

STATION 테이블에서 도시 이름(City)이 모음으로 끝나는 것을 중복없이 조회할 것.

SELECT DISTINCT CITY 
FROM STATION
WHERE REGEXP_LIKE(UPPER(SUBSTR(CITY, -1)), '[AEIOU]');

Higher Than 75 Marks

링크

STUDNETS 테이블에서 점수가 75점보다 큰 학생들의 이름을 조회.
이름에서 마지막 3문자를 기준으로 정렬하고, 만약 이름의 끝 3글자가 같은 학생이 있으면(ex: Bobby, Robby)
ID를 기준으로 증가하는 순으로 정렬.

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

oracle substr
SUBSTR(문자열 OR 칼럼명, 시작위치, 끝위치) // 시작 위치는 1부터 시작
ex1) SUBSTR(‘문자열’, 3) // 문자열의 3번째부터 끝까지 문자열 읽기
ex2) SUBSTR(‘문자열’, -4, 2) // 뒤에서 4번째부터 2개의 문자열 읽기


Employee Names

링크

Employee 테이블에서 모든 임직원들의 이름을 알파벳 순서대로 출력.

SELECT NAME FROM EMPLOYEE ORDER BY NAME;

Employee Salaries

링크

EMPLOYEE 테이블에서 month 값이 10(달)보다 작고, 매달의 급여(Salary)가 2000달러보다 크고, 모든 임직원들의 이름을 조회.
결과 값을 employee_id 오름차순으로 정렬할 것.

SELECT NAME FROM EMPLOYEE WHERE SALARY > 2000 AND MONTHS < 10 ORDER BY EMPLOYEE_ID;