面試中遇到sql,進行查詢

2021-08-29 19:48:42 字數 2393 閱讀 2491

在面試中遇到了這樣的問題,不知道大家是怎麼解決的,是關於sql的。

我是這麼寫的。

在資料庫庫中建這樣一張表

/****** object:  table [dbo].[student]    script date: 2009-1-15 16:46:41 ******/

if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[student]') and objectproperty(id, n'isusertable') = 1)

drop table [dbo].[student]

go/****** object:  table [dbo].[student]    script date: 2009-1-15 16:46:41 ******/

create table [dbo].[student] (

[id] [int] identity (1, 1) not null ,

[name] [varchar] (50) collate chinese_prc_ci_as null ,

[lesson] [varchar] (50) collate chinese_prc_ci_as null ,

[mark] [int] null

) on [primary]

go裡面的值:有很多的我只寫了部分。

idname

lesson

mark

1tom

english902

linmath803

john

chinese704

tommath875

tomchinese786

linenglish877

linchinese888

john

math459

john

english

5510

aaachinese

5611

aaamath

6712

aaaenglish

8713

bbbchinese

9014

bbbmath

7815

bbbenglish

8716

cccchinese

4317

cccmath

5018

cccenglish

5619

dddchinese

9820

dddmath

7821

dddenglish

8022

eeechinese

8723

eeemath

7724

eeeenglish87

select * from student

--1.有不及格學科學生名字

select distinct name from student where mark<60

--2.超出一門學科不及格的學生名字

select distinct name from student where mark<60

--3.所有學科都不及格

---第一種

select distinct name from student as s where  name in(select distinct name from student)  and (select mark from student where lesson= 'chinese'  and name=s.name ) <60  and

(select mark from student where lesson='math' and name=s.name ) <60  and (select mark from student where lesson='english' and name=s.name ) <60

--4.math排名前三包括並列

select top 3 name, lesson,mark from student  where lesson='math' order by(mark)  desc

--5.總分排名前三(包括並列)

select top 3 name ,sum(mark) as total from student group by(name) order by(total) desc

--6.列出每一科分數最高者名字及分數

select name ,l.lesson,l.maxmark  from ( select lesson,  max(mark) as maxmark  from student group by(lesson)) as l,student s

where s.mark=l.maxmark and s.lesson=l.lesson

sql查詢遇到的問題

一 與 在pl sql developer中,比如查詢如下sql select decode column name,if1 value1 if2 value2 if3 value1 value2 else from table name 就會出現如下變數對話方塊 要求輸入的名稱為value2的值,...

用SQL進行多表查詢

所謂多表查詢是相對單錶而言的,指從多個資料表中查詢資料,這裡我們主要學習從兩個資料表中如何查詢資料的方法。4.3.1 無條件多表查詢 無條件多表查詢是將各表的記錄以 笛卡爾 積的方式組合起來。如scott.dept表共有4條記錄,scott.emp表共有14條記錄,其 笛卡爾 積將有4 14 56條...

用SQL進行多表查詢

所謂多表查詢是相對單錶而言的,指從多個資料表中查詢資料,這裡我們主要學習從兩個資料表中如何查詢資料的方法。4.3.1 無條件多表查詢 無條件多表查詢是將各表的記錄以 笛卡爾 積的方式組合起來。如scott.dept表共有4條記錄,scott.emp表共有14條記錄,其 笛卡爾 積將有4 14 56條...