データシート/* Navicat SQLite データ転送 ソースサーバー: school ソース サーバー バージョン: 30808 ソースホスト: :0 ターゲット サーバー タイプ: SQLite ターゲット サーバー バージョン: 30808 ファイルエンコーディング: 65001 日付: 2021-12-23 16:06:04 */ プラグマforeign_keys = OFF; -- ---------------------------- -- コースのテーブル構造 -- ---------------------------- "main"."Course"が存在する場合はテーブルを削除します。 CREATE TABLEコース( CourseID 整数主キー自動増分、 courseme varchar(32)、 教師ID int ); -- ---------------------------- -- コースの記録 -- ---------------------------- INSERT INTO "main"."Course" VALUES (3001, 'Chinese', 1001); 「main」に「コース」VALUES(3002、「数学」、1002)を挿入します。 -- ---------------------------- -- マークのテーブル構造 -- ---------------------------- "main"."Mark"が存在する場合はテーブルを削除します。 CREATE TABLE マーク( ユーザーID整数、 コースID整数がNULLではありません。 スコア int デフォルト 0 ); -- ---------------------------- -- マークの記録 -- ---------------------------- 「main」に「Mark」VALUES(2001、3001、89)を挿入します。 「main」に「Mark」VALUES(2001、3002、90)を挿入します。 「main」に「Mark」VALUES(2002、3001、66)を挿入します。 「main」に「Mark」VALUES(2003、3002、85)を挿入します。 -- ---------------------------- -- sqlite_sequence のテーブル構造 -- ---------------------------- "main"."sqlite_sequence"が存在する場合はテーブルを削除します。 テーブル sqlite_sequence(name,seq) を作成します。 -- ---------------------------- -- sqlite_sequence のレコード -- ---------------------------- "main"."sqlite_sequence" に VALUES ('Teacher', 1002) を挿入します。 "main"."sqlite_sequence" に VALUES ('Student', 2002) を挿入します。 "main"."sqlite_sequence" に VALUES ('Course', 3002) を挿入します。 -- ---------------------------- -- 学生用のテーブル構造 -- ---------------------------- "main"."Student" が存在する場合はテーブルを削除します。 学生テーブルを作成( ユーザーID 整数 主キー 自動増分、 ユーザー名varchar(32)、 使用率 int、 ユーザーセックスvarchar(32) ); -- ---------------------------- -- 学生の記録 -- ---------------------------- 「main」に「学生」値(2001年、「Xiao Ming」、18歳、「男性」)を挿入します。 「main」に「学生」値(2002、「Xiaohong」、18、「女性」)を挿入します。 -- ---------------------------- -- 教師用テーブル構造 -- ---------------------------- "main"."Teacher" が存在する場合はテーブルを削除します。 教師テーブルの作成( 教師ID整数主キー自動増分、 教師名 varchar(32) ); -- ---------------------------- -- 教師の記録 -- ---------------------------- INSERT INTO "main"."Teacher" VALUES (1001, '张三'); 「main」に「Teacher」VALUES (1002, 'Li Si') を挿入します。 質問:1. 「中国語」コースの成績が「数学」コースの成績より低いすべての学生の学生IDを照会します。 からユーザーIDを選択 (Mark から、courseid = '3001' のユーザー ID、スコアを選択)a、 (コースID = '3002' のマークからユーザーID、スコアを選択)b ここで、a.userid = b.userid かつ a.score<b.score; 2. 平均点が60点を超える学生の学生IDと平均点を照会する MarkからユーザーID、平均スコアを選択 ユーザーIDによるグループ化 平均スコアが60以上であること 3. 全学生の学生ID、名前、選択したコース数、合計スコアを照会する 選択したコースの数として s.userid、s.username、count_courseid を選択します。 sum_score は生徒の合計得点 左結合 (userid、count(courseid) を count_courseid として選択し、sum(score) を sum_score として選択します ユーザーIDによるマークグループから)sc s.userid = sc.userid; の場合 4. 姓が「Li」の教師の数を照会します。 count(教師名)を選択 先生から teachername は '张%' のようになります。 5. 中国語コースのスコアが 60 未満の学生の学生 ID を、スコアの降順で検索します。 ユーザーID、スコアを選択 マークより コースID = '3001' スコア<60 スコア降順で並び替え; 6. 教師「張三」が担当するコースを受講した、または受講していない学生の名前を照会します。 ユーザー名を選択 学生から ユーザーIDが( ユーザーIDを選択 マーク、コース、教師より Course.teacherid = Teacher.teacherid かつ Mark.courseid = Course.courseid Teacher.teachername = 'Zhang San' の場合 ); 7. すべての学生の選択科目、コース番号、コース名を照会します。 CourseID、CourseMeを選択 コースから where courseid in (mark group by courseid から courseid を選択します)。 8. 2 つのコースを受講した学生の学生 ID を取得します。 ユーザーIDを選択 マークより ユーザーIDによるグループ化 count(8) == 2である; 9. 各コースとそれに対応する選択科目の受講生数を照会する Course グループから CourseID 、count(*) を CourseID で選択します。 10. 教師「張三」が担当するコースを選択した生徒の中で、最も成績が良い生徒の名前と成績を照会します。 Student.username、Mark.scoreを選択 マークより Mark.userid = Student.userid の Student に参加しました Mark.courseid = Course.courseid のコースに参加しました Course.teacherid = Teacher.teacherid の教師に参加しました Teacher.teachername = 'Zhang San' の場合 そして、Mark.score = ( 最大(スコア)を選択 マーク sc_1 より ここで、Mark.courseid = sc_1.courseid); 11. コースを選択した学生の数: count(2) を選択 (マークとは異なるユーザーIDを選択)a; 12. コースコードが「中国語」で、コーススコアが80点を超える学生の学生IDと名前を照会します。 Mark.userid、Student.usernameを選択 マークより Mark.userid = Student.userid の Student に参加しました ここで、Mark.courseid = '3001' かつ Mark.score>80; 13. 各コースの平均スコアを照会し、結果を平均スコアの昇順で並べ替えます。平均スコアが同じ場合は、コース番号の降順で並べ替えます。 コースID、平均スコアを選択 マークより コースIDでグループ化 平均(スコア)、コースID降順で並べ替え; 14. コース名が「数学」で、スコアが 85 を超える学生の名前とスコアを照会します。 c.courseme、Student.userid、Student.username、Mark.score を選択 コースcから Mark.courseid = c.courseid のマークを左結合します Student を Student.userid = Mark.userid に LEFT JOIN する ここで、c.courseme = 'Mathematics' かつ Mark.score>85; これで、14 の SQL データベース ケースに関するこの記事は終了です。SQL データベース ケースに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: IE6のmin-widthとmin-heightと互換性を持たせる簡単な方法
MySQL がバージョン 5.7 にアップグレードされた後、セキュリティが大幅に向上しました。しかし...
Windows サーバー リモート デスクトップのデフォルトのポート番号は 3389 です。職場でサ...
Linux は現在最も広く使用されているサーバー オペレーティング システムです。Unix をベー...
最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...
123WORDPRESS.COM では、FileZilla のダウンロード リンクを提供しています:...
目次最初のステップはMySQLをダウンロードすることですステップ2: ダウンロードした圧縮パッケージ...
コードはさらに合理化できますが、時間の制約があるため、まずはここで投稿して、自分で最適化してメニュー...
この記事では、参考までに、簡単な計算機能を実装するためのJavaScriptの具体的なコードを紹介し...
目次序文ステップ序文今日、es ログが記録されていないことに気付きました。filebeat、elas...
記事の構成1. 準備2. Java JDK8.0をインストールする3. 環境変数を設定する3. イン...
序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...
問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...
Mysql マスタースレーブ サービスの実装例を構成する### メインデータベースmy.cnfを構成...
以前書いた内容が詳細さに欠けていたため、今回は修正・補足しました。ただし、以前の MySQL バージ...
会社のビジネス要件により、次の図の赤い領域の効果を達成する必要があります。 効果の説明: 1. 赤い...