SQLハイスコアスイート
プログラマ
1. SELECT
1)すべてのレコードの表示
-- 코드를 입력하세요
SELECT * from ANIMAL_INS
order by ANIMAL_ID;
2)逆順で並べ替える
-- 코드를 입력하세요
SELECT NAME, DATETIME from ANIMAL_INS
order by ANIMAL_ID desc
3)病気の動物を探す
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME
from ANIMAL_INS
where INTAKE_CONDITION = "Sick"
order by ANIMAL_ID;
4)小動物探し
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME
from ANIMAL_INS
where INTAKE_CONDITION != "Aged"
order by ANIMAL_ID;
5)動物のIDと名前
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME
from ANIMAL_INS
order by ANIMAL_ID;
6)複数条件で並べ替える
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME, DATETIME
from ANIMAL_INS
order by NAME, DATETIME desc;
7)上位n名記録
-- 코드를 입력하세요
SELECT NAME
From ANIMAL_INS
ORDER BY DATETIME
LIMIT 1
-- ORACLE
/*
SELECT NAME
FROM (SELECT * FROM ANIMAL_INS ORDER BY DATETIME)
WHERE rownum = 1;
*/
2. SUM, MAX, MIN
1)最値を求める
-- 코드를 입력하세요
SELECT MAX(DATETIME)
from ANIMAL_INS;
2)最大値を求める
-- 코드를 입력하세요
SELECT MIN(DATETIME)
from ANIMAL_INS;
3)動物数取得
-- 코드를 입력하세요
SELECT COUNT(ANIMAL_ID)
from ANIMAL_INS;
4)重複除外
-- 코드를 입력하세요
SELECT COUNT(DISTINCT NAME)
from ANIMAL_INS
where NAME != "NULL";
-- WHERE NAME IS NOT NULL도 가능
3. GROUP BY
猫と犬は何匹いますか。
-- 코드를 입력하세요
SELECT ANIMAL_TYPE, count(ANIMAL_TYPE)
from ANIMAL_INS
group by ANIMAL_TYPE
order by ANIMAL_TYPE;
2)同名動物を探す
-- 코드를 입력하세요
SELECT NAME, count(NAME)
from ANIMAL_INS
where NAME is not null
group by NAME
having count(NAME) >= 2
order by NAME;
3)養子縁組取得時間(1)
-- 코드를 입력하세요
SELECT hour(DATETIME) HOUR, count(DATETIME) COUNT
from ANIMAL_OUTS
group by hour(DATETIME)
having HOUR >= 9 and HOUR < 20
order by hour(DATETIME);
4)養子縁組取得時間(2)
-- 코드를 입력하세요
set @hour = -1; -- 변수선언
SELECT (@hour := @hour + 1) as HOUR,
(select count(*) from ANIMAL_OUTS where @hour = hour(DATETIME))
from ANIMAL_OUTS
where @hour < 23;
/*
1. SET 옆에 변수명과 초기값을 설정할 수 있습니다.
2. @가 붙은 변수는 프로시저가 종료되어도 유지된다고 생각하면 됩니다.
- 이를 통해 값을 누적하여 0부터 23까지 표현할 수 있습니다.
3. @hour은 초기값을 -1로 설정합니다. PL/-SQL 문법에서 :=은 비교 연산자 =과 혼동을 피하기 위한의 대입 연산입니다.
4. SELECT (@hour := @hour +1) 은 @hour의 값에 1씩 증가시키면서 SELECT 문 전체를 실행하게 됩니다.
이 때 처음에 @hour 값이 -1 인데, 이 식에 의해 +1 이 되어 0이 저장됩니다.
HOUR 값이 0부터 시작할 수 있습니다.
5. WHERE @hour < 23일 때까지, @hour 값이 계속 + 1씩 증가합니다.
*/
4. IS NULL
1)無名動物のID
-- 코드를 입력하세요
SELECT ANIMAL_ID
from ANIMAL_INS
where NAME is null
order by ANIMAL_ID;
2)名前のついた動物のID
-- 코드를 입력하세요
SELECT ANIMAL_ID
from ANIMAL_INS
where NAME is not null
order by ANIMAL_ID;
3)処理NULL
-- 코드를 입력하세요
SELECT ANIMAL_TYPE, ifnull(NAME, 'No name') as NAME, SEX_UPON_INTAKE
from ANIMAL_INS
order by ANIMAL_ID;
5. JOIN
1)失われたレコードの検索
-- 코드를 입력하세요
SELECT B.ANIMAL_ID, B.NAME
from ANIMAL_INS A right join ANIMAL_OUTS B on A.ANIMAL_ID = B.ANIMAL_ID
where A.ANIMAL_ID is null;
ありません
-- 코드를 입력하세요
SELECT A.ANIMAL_ID, A.NAME
from ANIMAL_INS A join ANIMAL_OUTS B
where A.ANIMAL_ID = B.ANIMAL_ID and B.DATETIME <= A.DATETIME
order by A.DATETIME
3)長期保護動物(1)
-- 코드를 입력하세요
SELECT A.NAME, A.DATETIME
from ANIMAL_INS A left join ANIMAL_OUTS B on A.ANIMAL_ID = B.ANIMAL_ID
where B.ANIMAL_ID is null
order by A.DATETIME
limit 3;
4)保護に中性化した動物
-- 코드를 입력하세요
SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
from ANIMAL_INS A join ANIMAL_OUTS B on A.ANIMAL_ID = B.ANIMAL_ID
where A.SEX_UPON_INTAKE != B.SEX_UPON_OUTCOME
order by A.ANIMAL_ID;
6. String, Date
1)ルーシーとエラを探す
-- 코드를 입력하세요
SELECT distinct ANIMAL_ID, NAME, SEX_UPON_INTAKE
from ANIMAL_INS
where NAME in ("Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty")
order by ANIMAL_ID;
2)elという名前の動物を探す
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME
from ANIMAL_INS
where NAME like "%el%" and ANIMAL_TYPE = "Dog"
order by NAME;
3)中性化の有無の決定
-- 코드를 입력하세요
SELECT ANIMAL_ID, NAME,
CASE WHEN SEX_UPON_INTAKE like "%Neutered%"
OR SEX_UPON_INTAKE like "%Spayed%"
THEN "O"
ELSE "X"
END AS "중성화"
from ANIMAL_INS
order by ANIMAL_ID;
4)長期保護動物(2)
-- 코드를 입력하세요
SELECT A.ANIMAL_ID, A.NAME
from ANIMAL_INS A, ANIMAL_OUTS B
where A.ANIMAL_ID = B.ANIMAL_ID
order by B.DATETIME - A.DATETIME desc
limit 2;
5)DATETIMEからDATEへの変換
-- 코드를 입력하세요
/*
%Y(4자리 연도), %y(2자리 연도), %m(월), %d(일), %H(24시간), %h(12시간), %i, %s
*/
SELECT ANIMAL_ID, NAME, date_format(DATETIME, '%Y-%m-%d') as 날짜
from ANIMAL_INS
order by ANIMAL_ID;
Reference
この問題について(SQLハイスコアスイート), 我々は、より多くの情報をここで見つけました https://velog.io/@corone_hi/SQL-고득점-kitテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol