sql基礎面試題及答案
㈠ sql語句問題 面試題
select * from Voucher where 發生額>(select 發生額 from Voucher where 科目代碼=101)
㈡ ★●問個SQL面試題
這個肯定可以
delete from student t
WHERE EXISTS (SELECT 1 FROM student WHERE t.Name = Name AND ID <t.id)
保留的是相同name下面id最小的
delete from student t
WHERE EXISTS (SELECT 1 FROM student WHERE t.Name = Name AND ID >t.id)
保留的是相同name下面id最大的
㈢ SQL 面試題
SELECT aa.日期, aa.數值, SUM(lj.數值) AS 累計
FROM 累積 lj INNER JOIN
(SELECT *
FROM 累積) aa ON lj.日期 <= aa.日期
WHERE (aa.日期 <= '2005-05-04') --日期可以變成時間段
GROUP BY aa.日期, aa.數值
ORDER BY aa.日期
㈣ sql面試題
1.insert into table_b
select * from table_a
2.delete from table_a as a
where exists
(
select * from table_b as b
where b.Name=a.name
and b.text=a.text
)
刪除B表的語句差不多。
3.分頁網上很多答案,可以去查,而且,資料庫不同,用到的函數也不同。oracle資料庫用rownum進行分頁,SQL SERVER使用rownum() over()或top。
4.insert into table_c(name,text,number)
select name,text, rownum from table_a
union all
select name,text, rownum from table_b
這是Oracle寫法
㈤ sql查詢面試題
這個問題我是這樣想的:
由於找的是ID,所以首先是SELECT ID FROM table_name
要找有多條記錄的ID,所以條件是COUNT(ID)>1
這樣找出來的會有重復ID,然後再根據ID分組就可以了
完整的語句就是:
SELECT ID
FROM table_name
WHERE COUNT(ID)>1
GROUP BY ID
對這個題我有這么兩點總結:
1 平時我們一說ID,一般就是指的主鍵列,可這個題不是,ID列只是一個普通列,或者是一個外鍵而已。
2 由於要找的ID有多條記錄,如果不分組找出來的就會有重復,這樣就跟題目有些不符,所以要有分組
㈥ 1.一道SQL語句面試題
SELECT the_date,
(SELECT COUNT(*) FROM T AS T1 WHERE T1.the_date=T.the_date AND T1.the_type='勝') AS 勝,
(SELECT COUNT(*) FROM T AS T1 WHERE T1.the_date=T.the_date AND T1.the_type='負') AS 負
FROM T GROUP BY the_date
㈦ 你好,我想問我想用sql來存儲一些試題,要怎麼實現
你的這個實際上就是要用C#做一個試卷生成系統
這個還是有相當的工作量的
首先你基本概念有問題
SQL是一門語言,它不能存儲任何內容的,甚至它都不是一個軟體,而僅僅是一個語言標准
(如C/C++語言一樣)
而存儲你的試題的,要用到資料庫,而資料庫是支持SQL語言的
資料庫有很多種的,常用的有ORACLE/SQLSERVER/SYBASE/MYSQL/ACCESS/....當然,還有最小型的SQLITE
在使用資料庫前,你必須安裝資料庫軟體(系統本身是不帶的)
而要使用資料庫,你當然要學習SQL語言
你要存儲試題,要對試題的要素進行提取並生成一個表
如編號/分類/內容/難度...若有需要,還要放答案
然後用SQL語言,建立這樣一張表
並將你的數據通過SQL導入,或用C#調用SQL進行輸入
最後才是用C#對該試題庫進行管理,隨機抽取題目組成一張試卷
一個熟練的程序員(月薪2w的那種),一周應該可以做出來
學生的話,可以做為一個課程設計,一個月應該能完成一個簡單的框架(當然,前提是你已掌握基礎的資料庫及編程知識)
㈧ SQL語句面試題
SELECT*,
(SELECTCOUNT(*)FROM(SELECTCOUNT(*),b.sidFROMscbLEFTJOINcoursecONb.Cid=c.CidGROUPBYb.sid,c.tid)owWHEREow.sid=a.sid)as'
選課數量',
(SELECTsum(Score)FROMScdWHEREa.sid=d.sid)as'總成績'
FROMstudenta
;
SELECTd.sid,d.snamefromteachera
LEFTJOINcoursebona.tid=b.tid
LEFTJOINscconc.cid=b.cid
leftJOINstudentdONd.sid=c.sid
WHEREa.tname='葉萍';
SELECTsid,sname
FROMstudent
WHEREsidin(selecta.sid
FROMscAleftjoinscbona.sid=b.sid
WHEREa.cid=1andb.cid=2anda.score>b.score)
SELECTsc.Sid,sum(CASEWHENc.Cname='
數學'thensc.Scoreelse0end)數學,SUM(casewhenc.Cname='物理
'THENsc.ScoreELSE0END)物理,AVG(sc.Score)平均分
FROMsc
INNERJOINCourseconsc.Cid=c.Cid
WHEREc.Cnamein('數學','物理')
GROUPBYsc.Sid
ORDERBYAVG(sc.Score)DESC
insertintoSc(Sid,Cid,Score)values(003,3,85);
insertintoSc(Sid,Cid,Score)values(003,3,30);
首先這個不知道是你i寫錯了還是怎麼一個人化學成績有2個所以我在這里按照你這個上做的查詢所以有一個人是選了單個課程
㈨ sql語句 面試題
A.創建表格CODE省略
註明:學生表PK stu_id 課程表pk cos_id 分數表PK enrollment_id FK stu_id,cos_id
B.插入數據code省略
C.Query
select s.stu_id,stu_name,count(cos_id) from student s,enrollments e where s.stu_id = e.stu_id and e.grade>60 group by s.stu_id,stu_name;
select e.stu_id,s.stu_name,c.cos_name from student s,enrollments e,course c
where s.stu_id = e.stu_id
and e.cos_id = c.cos_id
and c.cos_name = 'CHINESE'
and s.stu_name like 'W%';
select stu_id,stu_name from (select e.stu_id,stu_name,cos_name from enrollments e,student s,course c
where s.stu_id = e.stu_id
and e.cos_id = c.cos_id
and c.cos_name IN ('CHINESE','MUSIC'))
group by stu_id,stu_name
having count(cos_name) = 2
select distinct e.cos_id,c.cos_name,count(e.stu_id) stu_count,count(e.stu_id)-NVL(A.FAIL,0) upscore,(count(e.stu_id)-NVL(A.FAIL,0))/count(e.stu_id) rate from
(select cos_id,count(stu_id) fail from enrollments where grade<60 group by cos_id) a,enrollments e,course c
where e.cos_id = a.cos_id(+)
and e.cos_id = c.cos_id
group by e.cos_id,NVL(a.fail,0),c.cos_name;
update student
set avg_grade =(select avg(grade) X from enrollments group by stu_id
having student.stu_id = enrollments.stu_id);
select stu_id,avg(grade) from
(select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)
group by stu_id
having count(*)<=2
UNION
select A.stu_id,avg(A.grade)from
(select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments) A,
(select stu_id,count(*) c from
(select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)
group by stu_id) B
where A.stu_id = B.stu_id
and A.x>1 and x<B.c
group by A.stu_id,b.c
_________________________________________________
環境:oracle 10g/TOAD 以上代碼均通過測試,如有問題,請聯系,謝謝
㈩ SQL面試題
select name
from
(
select name,sum(score) sc
from 表
group by name
) t1
where t1.sc>200
這樣?