[プログラマーSQL高得点Kit]Groupby
前の記事に続き、SQLの質問に答えます.
データは以下の通りです.
ANIMAL INSテーブルには、動物が動物保護所に入った後の情報が含まれています.ANIMAL INS表構造は、ANIMAL ID、ANIMAL TYPE、DATETIME、INTAKE CONDITION、NAME、SEX UPON INTAKEがそれぞれ動物のアイデンティティ、生物種、保護開始日、保護開始時の状態、名称、性別、中性化を表す.
(与えられた例は、実際の結果値とは異なる場合があります.)
この文章はGroup byを中心に解答します.
1.猫と犬は何匹いますか。
動物保護所に入った動物の中で猫と犬がそれぞれ何匹いるかを調べるSQL文を記入してください.この時は犬より先に猫を調べてください.次のように出力する必要があります.
この問題は、ANIMAL TYPEをグループ化し、一意値ANIMAL IDの個数を算出することができる.
SQL文を入力し、動物保護所に入った動物名のうち2回以上の名前とその使用回数を問い合せてください.この場合、名前のない動物を除き、名前順に結果を調べてください.次のように出力する必要があります.(結果は異なる場合があります.)
この問題はグループ,条件,並べ替えに用いられる問題である.
まずNAMEパケットを使用し、その後、グループの条件に応じてHAVINGによってWHEREではなくHAVINGによって構成される.
最後にNAMEでソートすればいいです
保護所は何時に養子縁組が最も活発なのか知りたい.09:00から19:59まで、SQL文を記入して、各時間帯に何回養子縁組があったかを調べてください.結果は時間順にソートする必要があります.次のように出力する必要があります.
この問題はHOUR()という関数を使う必要がある.HOUR()関数はDATETIMEでのみ時間を出力します.これを利用して時間をグループ化し、9時から19時までのデータを出力すればよい.
保護所は何時に養子縁組が最も活発なのか知りたい.0時から23時まで、時間帯ごとに何回養子縁組があったかを調べるSQL文を記入してください.結果は時間順にソートする必要があります.次のように出力する必要があります.
この問題はかなり難しい.
一人で悩んで習ったことのない部分のようなので、グーグル検索で知ったコードを添付します.@のプログラムが終了しても、変わらないままです. により、積算値で0〜23と表すことができる. SQL構文:=は、比較演算子=と混同されないように代入演算として使用されます.
また、SELECT(@hour:=@hour+1)は、@hour値を1つずつ増やして、SELECT文全体を実行します.
初期値を-1に設定し、0から@hour<23で@hour値が1増加し続けます.
データは以下の通りです.
ANIMAL INSテーブルには、動物が動物保護所に入った後の情報が含まれています.ANIMAL INS表構造は、ANIMAL ID、ANIMAL TYPE、DATETIME、INTAKE CONDITION、NAME、SEX UPON INTAKEがそれぞれ動物のアイデンティティ、生物種、保護開始日、保護開始時の状態、名称、性別、中性化を表す.
(与えられた例は、実際の結果値とは異なる場合があります.)
この文章はGroup byを中心に解答します.
1.猫と犬は何匹いますか。
動物保護所に入った動物の中で猫と犬がそれぞれ何匹いるかを調べるSQL文を記入してください.この時は犬より先に猫を調べてください.次のように出力する必要があります.
この問題は、ANIMAL TYPEをグループ化し、一意値ANIMAL IDの個数を算出することができる.
SELECT ANIMAL_TYPE, COUNT(ANIMAL_ID) FROM ANIMAL_INS Group by ANIMAL_TYPE order by ANIMAL_TYPE;
2.同名動物を探す SQL文を入力し、動物保護所に入った動物名のうち2回以上の名前とその使用回数を問い合せてください.この場合、名前のない動物を除き、名前順に結果を調べてください.次のように出力する必要があります.(結果は異なる場合があります.)
この問題はグループ,条件,並べ替えに用いられる問題である.
まずNAMEパケットを使用し、その後、グループの条件に応じてHAVINGによってWHEREではなくHAVINGによって構成される.
最後にNAMEでソートすればいいです
SELECT NAME, COUNT(NAME) FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) > 1 order by NAME;
3.養子縁組を探す(1) 保護所は何時に養子縁組が最も活発なのか知りたい.09:00から19:59まで、SQL文を記入して、各時間帯に何回養子縁組があったかを調べてください.結果は時間順にソートする必要があります.次のように出力する必要があります.
この問題はHOUR()という関数を使う必要がある.HOUR()関数はDATETIMEでのみ時間を出力します.これを利用して時間をグループ化し、9時から19時までのデータを出力すればよい.
SELECT HOUR(DATETIME) as HOUR, COUNT(ANIMAL_ID) FROM ANIMAL_OUTS GROUP BY(HOUR) HAVING HOUR >= 9 AND HOUR <= 19 ORDER BY HOUR;
4.養子縁組を探す(2) 保護所は何時に養子縁組が最も活発なのか知りたい.0時から23時まで、時間帯ごとに何回養子縁組があったかを調べるSQL文を記入してください.結果は時間順にソートする必要があります.次のように出力する必要があります.
この問題はかなり難しい.
一人で悩んで習ったことのない部分のようなので、グーグル検索で知ったコードを添付します.
SET @hour := -1; -- 변수 선언
SELECT (@hour := @hour + 1) as HOUR,
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23
まずSETで変数名と初期値を設定できます.また、SELECT(@hour:=@hour+1)は、@hour値を1つずつ増やして、SELECT文全体を実行します.
初期値を-1に設定し、0から@hour<23で@hour値が1増加し続けます.
Reference
この問題について([プログラマーSQL高得点Kit]Groupby), 我々は、より多くの情報をここで見つけました https://velog.io/@peration/프로그래머스-SQLテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol