SQLZOOのNumeric Examplesを解いてみた

さいきんSQLを勉強していまして、Gunosyの「非エンジニアが最速でSQLをマスターする方法」に書いてある『10年戦えるデータ分析入門』→SQLZOO (https://sqlzoo.net/wiki/SQL_Tutorial) という順番で学習を進めています。

 SQLZOOは出力が合っているのか違っているのかは教えてくれるのですが、どんなSQL文を書けば正解できるのか教えてくれません。すでに日本語でSQLZOOの解答を公開してくださっている方もおられますが、私も自分の勉強のアウトプットとして、解答例を公開したいと思います。

 SQLZOOは問題文が英語なので、あまり自信はありませんが問題文の和訳も用意しました。意訳なので正確さに欠けるかもしれませんが……

Check out one row

この例は質問1の、Edinburgh Napier Universityの、Computer Scienceを勉強する学生の回答数を表示します。STRONGLY AGREEの割合を表示してください。

SELECT
    A_STRONGLY_AGREE
FROM nss
WHERE question = 'Q01'
    AND institution = 'Edinburgh Napier University'
    AND subject = '(8) Computer Science';

Calculate how many agree or strongly agree

機関名と質問15で100以上を回答した学生を表示してください。

SELECT
    institution
    , subject
FROM nss
WHERE question='Q15' AND score >= 100;

Unhappy Computer Students

機関名と、Computer Scienceを専攻していて質問15のスコアが50未満の学生のスコアを表示してください。

SELECT
    institution
    , score
FROM nss
WHERE question='Q15'
    AND score < 50
    AND subject =  '(8) Computer Science';

More Computing or Creative Students?

専攻名と、専攻が(8) Computer Scienceか(H) Creative Arts and Designの学生それぞれについて質問22に回答した学生の総数を表示してください。

SELECT
    subject,
    SUM(response) AS Q_22
FROM nss
WHERE (question = 'Q22' AND subject =  '(8) Computer Science')
    OR (question = 'Q22' AND subject = '(H) Creative Arts and Design')
GROUP BY subject;

Strongly Agree Numbers

専攻名と、専攻が(8) Computer Scienceか(H) Creative Arts and Designの学生それぞれについて質問22にA_STRONGLY_AGREEと回答した学生の総数を表示してください。

SELECT
    subject
    , SUM(A_STRONGLY_AGREE * response / 100)
FROM nss
WHERE (question = 'Q22' AND subject =  '(8) Computer Science')
    OR (question = 'Q22' AND subject = '(H) Creative Arts and Design')
GROUP BY subject;

Strongly Agree, Percentage

質問22にA_STRONGLY_AGREEと答えた専攻がComputer Scienceの学生のパーセンテージと、Creative Arts and Designの学生のパーセンテージを表示してください。RONUD関数を使って、小数点は切り捨ててください。

SELECT
    subject
    , ROUND(SUM(A_STRONGLY_AGREE / 100 * response) / sum(response) * 100, 0)
FROM nss
WHERE question = 'Q22' 
    AND(subject =  '(8) Computer Science' OR subject ='(H) Creative Arts and Design')
GROUP BY subject;

Scores for Institutions in Manchester

機関名にManchesterが含まれる各機関の質問22の平均スコアを示してください。scoreカラムはパーセンテージです。パーセンテージにresponseを掛けて、その後responseの総数で割る必要があります。回答は最も近い整数に丸めてください。

SELECT
    institution
    , ROUND(SUM(score * response) / SUM(response), 0) AS average_score
FROM nss
WHERE institution LIKE '%Manchester%'
    AND question = 'Q22'
GROUP BY institution;

Number of Computing Student in Manchester

質問1で、機関名、サンプルサイズ、マンチェスターでコンピューターサイエンスを専攻する学生の数を表示してください。

SELECT
institution
    , SUM(sample)
    , SUM(CASE WHEN subject = '(8) Computer Science' THEN sample ELSE 0 END) AS computing_students
FROM nss
WHERE question = 'Q01'
    AND institution LIKE '%Manchester%'
GROUP BY institution;

参考:https://note.com/shincz88/n/n5debf6a2354b

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


SQL

前の記事

SQLZOOのUsing Nullを解いてみた