LoginSignup
0
0

01: SQL サッカーの問題集サイトの解答を、サブクエリ(副問い合わせ)に書き換えた。

Posted at

■ 概要 

・サイト:TECH Pjin(テックプロジン)

・上記のSQL問題を、通常解答とサブクエリ使用に書き換えました。

・使用SQLは、Postgresqlです。

■ コード記載

・問5, 問6, 問8

sql 01.sql

-------------- Q 08 - 02 (サブクエリ,副問い合わせ)
--- 問題:各ポジションごとの総得点を表示してください。
--- players, goals
SELECT
    TT.ポジション,
    TT.ゴール数
FROM
    (
        SELECT
            P.POSITION  AS ポジション,
            COUNT(G.ID) AS ゴール数
        FROM
            GOALS   G
            JOIN PLAYERS P
            ON G.PLAYER_ID = P.ID
        GROUP BY
            P."position"
    ) TT
ORDER BY
    TT.ゴール数 DESC;

-------------- Q 08
--- 問題:各ポジションごとの総得点を表示してください。
--- players, goals
SELECT
    P."position" AS ポジション,
    COUNT(G.ID) AS ゴール数
FROM
    PLAYERS P
    JOIN GOALS G
    ON G.PLAYER_ID = P.ID
GROUP BY
    P."position"
ORDER BY
    ゴール数 DESC;

------------- Q 06
--- 問題:すべての選手を対象として選手ごとの得点ランキングを表示してください。(SELECT句で副問合せを使うこと)
--- players , goals
SELECT
    P.NAME,
    P.POSITION,
    P.CLUB,
    (
        SELECT
            COUNT(ID)
        FROM
            GOALS G
        WHERE
            G.PLAYER_ID = P.ID
    ) AS TT
FROM
    PLAYERS P
ORDER BY
    TT DESC;

-------------- Q 05 - 2 副問い合わせ(サブクエリ) 書き方
--- 問題:キックオフ日時と対戦国の国名をキックオフ日時の早いものから順に表示してください。
--pairings countries
SELECT
    P.KICKOFF,
    (
        SELECT
            NAME
        FROM
            COUNTRIES C
        WHERE
            C.ID = P.MY_COUNTRY_ID
    ) AS 国名01,
    (
        SELECT
            NAME
        FROM
            COUNTRIES C2
        WHERE
            C2.ID = P.ENEMY_COUNTRY_ID
    ) AS 国名02
FROM
    PAIRINGS P
ORDER BY
    P.KICKOFF ASC;

-------------- Q 05
--- 問題:キックオフ日時と対戦国の国名をキックオフ日時の早いものから順に表示してください。
--pairings countries
SELECT
    P.KICKOFF,
    C.NAME    AS 国名01,
    C2.NAME   AS 国名02
FROM
    PAIRINGS  P
    JOIN COUNTRIES C
    ON C.ID = P.MY_COUNTRY_ID JOIN COUNTRIES C2
    ON C2.ID = P.ENEMY_COUNTRY_ID
ORDER BY
    KICKOFF ASC;

---------------------------- END

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0