6、古典的な50のSQLインタビューと回答

クラシック50 SQLインタビューと回答

SQLデータベースの面接の質問と回答(50例)オリジナルます。https://blog.csdn.net/qq_30184931/article/details/79200526

学生(S#、SNAME、セージ 、Ssex) 学生テーブル
S#:学生ID
SNAME:学生の名前
セージ:学生年齢
Ssex:学生のセックス
講座(C#、CNAME、T #) カリキュラム
のC#:コース番号
CNAME:コースタイトル
T #:教師数
SC(S#、C#、スコア) スコアテーブル
S#:学生ID
C#:コース番号
スコア:スコア
教師(T#、TNAME)教師テーブル
T#:教師番号:
TNAME:教師名

問題:

すべての学生の成績号のための「002」高校のカリキュラムより1、クエリ「001」のコース

、(複数を選択#、スコアSCからここで、C#= '002')B場合a.score> b.scoreおよび#= BSとして(S#、C#= '001' SCからスコアを選択)から#AS SELECT #;

図2に示すように、クエリは60ポイントの平均スコアと学校等級点平均の学生の数よりも大きい
セレクトS位、平均(スコア) SCグループからS#によってAVG(スコア)を有する> 60

図3は、すべての学生番号、名前、選択科目の総得点数のクエリ
student.S#を選択し、student.Sname、カウント数( sc.C#)、学生からの和(スコア)は、外側左student.S#= SC上のSCに参加Student.S#、SNAMEによって.S#グループ

図4に示すように、クエリ教師数の「李」を某:
SELECT COUNT(DISTINCT(TNAME))
教師から
WHERE TNAMEを「リー%」のような、

5、クエリは、生徒の教師が学ぶことができる"あなたがたのPing"、学ぶことがなかった名前:
SELECT student.S#、student.Sname
学生から
WHERE S#ないSCから(SELECT DISTINCT(SC.S番号)で、コース,,教師
sc.c course.c#=#=#course.Tとteacher.TとTeahcer.Tname#= 'エッピング');

6は、クエリのすべての教訓は、 "あなたがたのPing"教師は生徒の学校を教え、名前:
のSELECTのS#、学生SNAME
SELECT S#SCからでWHEREのS#(もちろん,,先生
WHERE SC.C#=コース、 #=#とTeacher.T .C#Course.T
Sグループ#によって及びTeacher.Tname = 'エッピング'
COUNT(SC.C位)=(SELECT COUNT(C#)コース、教師、を有する
、Teacher.T#=コース.T#とTNAME = 'エッピング'));

7、クエリが「011」を学んだと私はコース番号、名前の数「002」の学生を学んだ:
SELECT Student.S#、Student.Sname
学生からは、SCは、WHERE Student.S#=#SC.S
とSC #= .C 'の001'and
EXISTS(SCの#SELECT * FROMを= AS SC_2 WHERE SC_2.SとSC_2.C SC.S ## =' 002「);

8、カリキュラム番号の詳細「002」の結果「001」番号は、学校のすべての学生のためのコースのカリキュラム、名前よりも低くなっている:
選択S#、SNAME
、(SELECT Student.S#、Student.Sname、スコアから
(SELECTスコアからSC_2 WHERE SC_2.S#= SC Student.SとSC_2.C ## = '002')score2
学生から、SC
WHERE Student.S SC.S#=#= C#および'001')S_2
score2 <スコア。

9、すべてが少ない学校の60人の学生、名前よりもコースのグレードを照会します。
SELECT S#、SNAME
学生から
S#がない中で
WHERE SS#と#スコアをsc.s = SELECT student.s#学生、SCからの(> 60 );

:10は、クエリは整数、名前のすべての学生の教訓を学びませんでした
SELECT student.s#、student.sname
学生から、SC
WHERE student.s sc.s ## =
student.sname、student.s#によってグループを
HAVING (選択(C#の)<カウントのコースからのカウント(C#の));

:11、クエリは名前と番号「1001」の学生が学んできた学習の学生の同じ学生数を有する少なくとも1つのコースがある
SELECT S#、SNAME
学生から、SC
WHERE student.s sc.s#=#
SELECT(にとC#をS#= SCからC#の '1001')。

; 12、他の学生のすべての学生のための学校の理科のお問い合わせ番号「001」を通じて少なくともレッスン番号と名前学ぶために
SELECT DISTINCT sc.s#、SNAME
学生から、SC
WHERE student.s sc.s#=#
やC#での(S SCからのC#を選択 #= '001')。

13、「SC」テーブルのパフォーマンスクラス、この目的のために、「あなたがたのPing」教師の成績平均点がコースに変更されています。
アップデートセットスコア=サウスカロライナ(セレクト平均(s2_Score)どこからSC S2 = sc.c s2.c ##)
C#でWHERE
(C#ON#=#cs.t TCを参加]を選択しINNER SC CS教師からtc.t WHERE TNAME = 'エッピング')

14、クエリやカリキュラム、同一の他の学生の学生番号と名前学ぶ学生の"1002"番号:
における皮下WHERE C#からSELECTのS#
(SCからSELECTのC#をWHERE S#= '1002')
のS#HAVING COUNTによってグループ()=
(SELECT COUNT(
)S#= '1002' SCから)。

15、研究「フラット葉」クラスの先生SCテーブルのレコードを削除します。
delect SC
コースから,,先生
WHERE course.c ## = sc.c
とcourse.t ## = teacher.tを
してTNAME =「あなたがたのPing」;

番号「003」学生学生IDプログラム、002レッスンの平均スコアに行きませんでした:16は、以下の条件が必要となるいくつかのレコードは、SCテーブルに挿入される
挿入SC SELECTのS#、「002」、
選択AVG SC#Cから= '002'(スコア))
; S#ないから学生でWHERE選択S#C#= '003')から(SC

次のように17は、ディスプレイ「データベース」、「経営管理」、「英語」3コースのグレードを降順ですべての学生の平均スコアに応じて、表示される:学生ID、データベース、ビジネス管理、英語、コースの有効数、有効平均:
SELECT S AS#学生ID、
データベースAS(TS#からWHERE sc.s SCスコアとC#=#= '004'を選択)、
(TS#と#=#= Cからsc.s SCスコアを選択'001')企業経営など、
WHERE sc.s SC = TS#と#C#= '006')AS英語から(SELECTスコア
タイスコアとして平均(t.score効果的なカリキュラムの数、AS COUNT(*))
からAS T SC
グループ#Sによって
AVG順(t.score)

以下の形式で表示されます:18は、全ての被験者が最高と最低点照会コースIDを、最高スコアは、最も低いスコアは
コースIDとしてのLC#を選択し、L.score最高のスコアとして、
R.score AS最低スコア
SC Lから、 R&LT SC
#=#のLCのRcの
とL.score =(SELECT MAX(IL.score)
IL、IM AS学生のSCから
IL.c#=#=#のLCおよびIM.s IL.s#
IL.cによってグループ# )
とR.score =(SELECT分(IR.score)
IR SC ASから
WHERE IR.c#=#のRcは
IR.cによってグループ#)。

19、速度をローからハイに降順とパスで全ての被験者の百分率の平均スコアに応じて:
SELECT tCの#ASコース数、
MAX(course.Cname)コース名として、
ISNULL(AVG(音楽)、0)平均ASその結果、
100 * SUM(WHEN ISNULL CASE(スコア0)> = 60 THEN END 1 ELSE 0)/ COUNT( は、ASパーセンテージ通過
T SCは、もちろん、FROM
tCの#=#course.C
GROUP BY tCの#
100で注文を* SUM(ISNULL CASE(スコア0)> = 60 THEN END 1 ELSE 0)/ COUNT(
)DESC

20、( "1行" ディスプレイ付き)割合としてカリキュラムや成績評価点の平均通過率の詳細:ビジネス・マネジメント(001)、マルクス(002)、OO&UML(003)、データベース(004):

21、クエリの異なる教師が異なるコースに平均低ショーのハイ教える:
教師のID、AS SELECT MAX(ZT番号)
先生の名前AS MAX(Z.Tname)、
コースのID AS CC番号を、
成績平均点AS AVG(スコア)
AS T SC AS、AS教師Z、Cコース、FROM
TC番号= CC及びCT ### = ZT
CC位BY GROUP
AVG(音楽)DESC BY ORDER

学生のレポートカードで第6から22、次のクエリコースグレード3:エンタープライズ管理(001)、マルクス(002)、UML(003)、データベース(004):

23、統計以下の全ての被験者、各セグメントの点の数:コースID、コース名、[100から85]、[85から70]、[70から60]、[60未満]:
SELECT SC.C#ASコースID、コース名としてCNAME、
SUM(THEN 100 85の1 ELSE 0 ENDスコアCASE。)ように100から85]、
SUM(THEN 85 70〜1 ELSE 0 ENDスコアCASE。)AS [85から70]、
SUM (BETWEENスコアWHENケース70 60 AND THEN ELSE 0 END 1)AS [70 - 60]、
SUM(WHEN CASEスコア<60 THEN ELSE 0 END 1)AS [60 - ]
SC FROM、コース、
SC.Cコース、#=。 #C
GROUP BY SC.C#、CNAME。

24、学生成績評価点平均と順位クエリ:
SELECT 1+(SELECT COUNT(DISTINCT成績平均点)
FROM(SELECT S#、AVG(スコア)の平均スコアAS
SC FROM
ザGROUP BY S#)AS T1平均スコア> T2の平均、ランキングなどスコア)
S#AS学生番号、成績平均点
(SELECT S#、AVG(FROMスコア) 成績評価点の平均
SC FROM
GROUP BY S番号)AS T2に
平均スコアDESC BY ORDERを。

25、上位3つの問い合わせは(スコア縛ら事情を考慮せずに)すべての被験者を記録します
、コースのIDとしてt1.C番号、SELECT t1.S#ASの学生IDをスコアスコアとしては、
T1 SC FROM
スコアーWHERE
(SELECT TOP 3スコア
FROM SC
WHERE t1.c#C#=
ORDER BY DESCスコア)

図26は、各コースのためのクエリの数は、選択科目学生である:
SELECT C#の、COUNT(S#)と
SCから
のC#によってグループ。

:27、唯一の選択科目学生の学校全体の番号と名前をチェックアウト
登録番号AS SELECT sc.s#、student.sname、COUNT(C#)を
、学生SCから
WHERE sc.s ## = student.s
グループ、Student.snameによって#sc.s
HAVING COUNT(Cの#)= 1。

28、クエリの男の子、女の子の数:
少年たちの数AS SELECT COUNT(SSEX)
学生から
SSEXによってグループ
HAVING SSEX =「M」;
SELECT COUNT(SSEX)女の子の数AS
学生から
SSEXによってグループ
HAVING SSEX =「女性」;

29、クエリ名「張」学生のリスト:
SELECT snameの
学生から
「張%」のようなWHERE SNAME。

30、同じ名前、同じ名前と統計の数照会する学生のリスト:
SELECT sanme、COUNTを(
学生からの
SNAMEのでグループ
havangのCOUNT(
)> 1。

1981年生まれの31、、学生のリスト(注:学生のテーブル型セージの列がdatetime型である):
のSELECT SNAME、変換(CHAR(11)、DATEPART(年、セージ))AS年齢
学生から
(charのWHERE変換(11) 、DATEPART(年、セージ)) = '1981';

:32、問い合わせは、学校の数85、名前や成績評価点の平均では、すべての学生の平均スコアよりも大きい
SELECT SNAME、SC.S#、AVG(スコア)
学生、SCから
WHERE Student.S SC.S ## =
SC.Sによってグループ#、SNAME
AVG(スコア)を有する> 85。

33、降順にコース数に応じて各コースのクエリ平均スコアは、昇順の平均結果の結果、同一の平均スコア:
SELECT C#、AVG(音楽)
SCから
グループC#によって
AVG順(スコア)、C#のDESC。

34、クエリコース名「データベース」、およびスコア60人の学生の名前とのスコア以下のように:
SELECT SNAME、ISNULL(スコア、0)
学生から、SC、コース、
WHERE sc.sとsc.c ### = student.s = course.c#とcourse.cname = 'データベース'とスコア<60。

35、すべての学生のためのクエリの選択科目:
SELECT sc.s#、#sc.c、SNAME、CNAME
SCから、学生コース、
WHERE sc.s student.s ## =#= course.cとsc.c#;

36、70点以上のコースグレード、コース名とスコアの任意の名前のクエリ:
SELECT DISTINCT student.s#、student.sname、sc.c#、sc.score
学生から、SC
WHERE sc.score> = 70とsc.s#= student.s#;

37、クエリはもちろん失敗及び下降コース数で配置されている:
SELECT C位
SCから
WHEREスコア<60
C#順。

38、カリキュラムの詳細は、「003」番と80以上の学校の番号と名前でコース年生:
SELECT sc.s#、student.sname
SCから、学生
WHERE sc.s ## = student.sとスコア> 80とC#= '003' 。

39、選挙のプログラムを求めている学生の数:
SCからSELECT COUNT(*)を、

40、学生の照会選択科目「イェPingの」教師の助成プログラムは、最高の達成学生が自分のマークに名前を付ける:
SELECT student.sname、スコア
学生から、SC、コース、C、教師
WHERE student.s ## = sc.S sc.c CC#=#と
とCT = ## teacher.T
とteacher.tname = 'エッピング'
及び= sc.score(SC#= C#CCからSELECT MAX(音楽))。

41件の問い合わせ各科目とそれに対応する番号:
のC#によるSCグループからSELECT COUNT(*)。

42、同じクエリ別のコースグレードの学生と学生番号、コース番号、生徒の成績:
SELECT DISTINCT AS#、b.score
皮下Aから、B SC
WHERE a.score = b.score
とAC#<>#BCが。

43、各コースの上位2つの最良のクエリ結果:
学生ID、t1.c位コースID AS SELECT t1.s#、スコアとしてスコア
SC T1から
SCから(SELECTトップスコアでスコア
WHERE t1.c#= C#
スコアDESC順)
t1.c番号順。

44、統計選択科目あたりの学生数(10人だけの統計を超えるコース)。要求出力コース数と学生の数、クエリ結果を降順で番号に従って、番号場合と同様、昇順にコース番号によってソート:
コース番号、COUNT(AS SELECT C#の数のような)
SCから
のC#によるグループ
(COUNTによって指図
)DESC C#。

45、学生数の少なくとも2つのコース取るために検索:
SELECT Sの#
SCから
S#でグループ
> HAVING COUNT(*)を= 2;

46、クエリのコースとコース番号、コース名を取るために、すべての学生:
SELECTのC#、CNAME
コースから、
(でSELECTからC#、C#SCグループ)のC#。

:47は、任意の1人の教師がコースの学生の名前教え問い合わせ"イェジンのPing"を学んだことがない
SELECT SNAME
学生から
WHERE S#ないSELECT S#コース(で、先生から、SC = teacher.t WHERE course.t ##を#=#course.c sc.cと
とTNAME = 'エッピング')。

:48は、二つ以上の問い合わせは、コースの学生が数字を学習し、その平均スコアは失敗した
SELECTのS#、AVG(ISNULL(スコア、0))
SCから
WHEREスコアから(SELECTのS#のSCのS#<60グループによるをCOUNTの#1 S(*)> 2)を有する
Sによってグループ#を。

49は、学生が降順の番号でスコアで学ぶ、「004」分率が60回の未満のコースで取得する:
SELECTのS#を
SCから
WHERE C#=「004」
とスコア<60

公開された38元の記事 ウォンの賞賛5 ビュー6043

おすすめ

転載: blog.csdn.net/luluisntlulu/article/details/90489792