🕗[プログラマー]養子縁組の時間を探す(2)


問題の説明


ANIMAL OUTSテーブルには、動物保護から引き取った動物の情報が含まれています.ANIMAL OUTS表の構造は以下の通りである:ANIMAL ID、ANIMAL TYPE、DATETIME、NAME、SEX UPON OUTCOMEはそれぞれ動物の身分、生物種、養子縁組日、氏名、性別、中性化を表す.

保護所は何時に養子縁組が最も活発なのか知りたい.0時から23時まで、時間帯ごとに何回養子縁組があったかを調べるSQL文を記入してください.結果は時間順にソートする必要があります.

SQL文を実行するときは、次のようにします.

私の答え

-- 코드를 입력하세요
WITH RECURSIVE BASE AS (
    SELECT 0 AS HOUR
    UNION ALL
    SELECT HOUR+1 FROM BASE 
    WHERE HOUR < 23
)

SELECT HOUR AS HOUR, COUNT(ANIMAL_ID) AS COUNT FROM BASE LEFT JOIN ANIMAL_OUTS ON BASE.HOUR = HOUR(ANIMAL_OUTS.DATETIME) GROUP BY HOUR ORDER BY HOUR;
WITH RECURSIVEは重要であり,その文法は再帰を意味する.
すなわち、値が0の列と0から22の列を繰り返し、n+1というテーブルを作成する.
そしてLEFTJOINで問い合わせると終了です