【MySQL学習ログ】実戦項目
3525 ワード
プロジェクト1:
スコアランキング-(難易度:中等)は依然として昨日のスコア表であり、順位機能を実現しているが、順位は非連続であり、以下の通りである:±--------------+|Score|Rank|±----------+|4.00|1||4.00|1||3.85|3||3.65|4||3.65|4|4|3.50|3.50|3.50|6|±----------++
回答:
プロジェクト2:
トリップとユーザー(難易度:困難)Tripsテーブルには、すべてのタクシーのトリップ情報が格納されます.各行程にワンタッチId,Client_があるIdとDriver_IdはUsersテーブルのUsers_Idの外部キー.Statusは列挙タイプであり、列挙メンバーは(‘completed’,‘cancelled_by_driver’,‘cancelled_by_client’)である.±—±----------±----------±--------±-------------------±---------+ | Id | Client_Id | Driver_Id | City_Id | Status |Request_at| ±—±----------±----------±--------±-------------------±---------+ | 1 | 1 | 10 | 1 | completed |2013-10-01| | 2 | 2 | 11 | 1 | cancelled_by_driver|2013-10-01| | 3 | 3 | 12 | 6 | completed |2013-10-01| | 4 | 4 | 13 | 6 | cancelled_by_client|2013-10-01| | 5 | 1 | 10 | 1 | completed |2013-10-02| | 6 | 2 | 11 | 6 | completed |2013-10-02| | 7 | 3 | 12 | 6 | completed |2013-10-02| | 8 | 2 | 12 | 12 | completed |2013-10-03| | 9 | 3 | 10 | 12 | completed |2013-10-03| | 10 | 4 | 13 | 12 | cancelled_by_driver|2013-10-03|±—±---------------------±--------------------------------------------------------++Usersテーブルはすべてのユーザーに保存されます.ユーザーごとにユニークなUsers_Id.Bannedはこのユーザーが禁止されているかどうかを示し、Roleは(「client」,「driver」,「partner」)を表す列挙タイプである.±---------±-------±-------+ | Users_Id|Banned|Role|±---------------------------------------------------------------+|1|No|client||2|Yes|client||3|No|client||4|No|client||10|No|driver||11|No|driver||12|No|driver||13|No|driver|±---------------±-++SQL文を書いて、2013年10月1日から2013年10月3日までの間、非禁止ユーザーのキャンセル率を調べた.上記の表に基づいて、SQL文は次の結果を返します.キャンセル率(Cancelation Rate)は小数2桁を保持します.±-----------±------------------+ | Day | Cancellation Rate | ±-----------±------------------+ | 2013-10-01 | 0.33 | | 2013-10-02 | 0.00 | | 2013-10-03 | 0.50 | ±-----------±------------------+
プロジェクト3:
各部門の上位3高賃金の従業員(難易度:中等)
昨日のemployeeテーブルを空にし、改めて下記のデータを挿入します(実は多く5,6の2行を挿入します):±—±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------各部門の給料の上位3社の従業員を探し出す.例えば、上記で与えられたテーブルに基づいて、クエリの結果は、±--------±--------+|Department|Employee|Salary|±--------+|IT|Max|90000||IT|Randy|85000||IT|Joe|70000||Sales|Henry|80000||Sales|Sam|60000|±--------±--------------------+
スコアランキング-(難易度:中等)は依然として昨日のスコア表であり、順位機能を実現しているが、順位は非連続であり、以下の通りである:±--------------+|Score|Rank|±----------+|4.00|1||4.00|1||3.85|3||3.65|4||3.65|4|4|3.50|3.50|3.50|6|±----------++
回答:
-- , , ,
SELECT Score,
(SELECT COUNT(Score) FROM score AS s2
WHERE s2.Score > s1.Score) +1 AS 'RANK'
FROM score AS s1
ORDER BY Score DESC;
プロジェクト2:
トリップとユーザー(難易度:困難)Tripsテーブルには、すべてのタクシーのトリップ情報が格納されます.各行程にワンタッチId,Client_があるIdとDriver_IdはUsersテーブルのUsers_Idの外部キー.Statusは列挙タイプであり、列挙メンバーは(‘completed’,‘cancelled_by_driver’,‘cancelled_by_client’)である.±—±----------±----------±--------±-------------------±---------+ | Id | Client_Id | Driver_Id | City_Id | Status |Request_at| ±—±----------±----------±--------±-------------------±---------+ | 1 | 1 | 10 | 1 | completed |2013-10-01| | 2 | 2 | 11 | 1 | cancelled_by_driver|2013-10-01| | 3 | 3 | 12 | 6 | completed |2013-10-01| | 4 | 4 | 13 | 6 | cancelled_by_client|2013-10-01| | 5 | 1 | 10 | 1 | completed |2013-10-02| | 6 | 2 | 11 | 6 | completed |2013-10-02| | 7 | 3 | 12 | 6 | completed |2013-10-02| | 8 | 2 | 12 | 12 | completed |2013-10-03| | 9 | 3 | 10 | 12 | completed |2013-10-03| | 10 | 4 | 13 | 12 | cancelled_by_driver|2013-10-03|±—±---------------------±--------------------------------------------------------++Usersテーブルはすべてのユーザーに保存されます.ユーザーごとにユニークなUsers_Id.Bannedはこのユーザーが禁止されているかどうかを示し、Roleは(「client」,「driver」,「partner」)を表す列挙タイプである.±---------±-------±-------+ | Users_Id|Banned|Role|±---------------------------------------------------------------+|1|No|client||2|Yes|client||3|No|client||4|No|client||10|No|driver||11|No|driver||12|No|driver||13|No|driver|±---------------±-++SQL文を書いて、2013年10月1日から2013年10月3日までの間、非禁止ユーザーのキャンセル率を調べた.上記の表に基づいて、SQL文は次の結果を返します.キャンセル率(Cancelation Rate)は小数2桁を保持します.±-----------±------------------+ | Day | Cancellation Rate | ±-----------±------------------+ | 2013-10-01 | 0.33 | | 2013-10-02 | 0.00 | | 2013-10-03 | 0.50 | ±-----------±------------------+
プロジェクト3:
各部門の上位3高賃金の従業員(難易度:中等)
昨日のemployeeテーブルを空にし、改めて下記のデータを挿入します(実は多く5,6の2行を挿入します):±—±-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------各部門の給料の上位3社の従業員を探し出す.例えば、上記で与えられたテーブルに基づいて、クエリの結果は、±--------±--------+|Department|Employee|Salary|±--------+|IT|Max|90000||IT|Randy|85000||IT|Joe|70000||Sales|Henry|80000||Sales|Sam|60000|±--------±--------------------+