查詢課程1比課程2成績高的學生
1. 查詢「語文」課程比「數學」課程成績高的所有學生的學號 查詢如下課程成績第 3 名到第 6 名的學生
select a.sid from sc as a,sc as b
where a.sid=b.sid and a.cid='語文 and b.cid='數學' and a.score > b.score
2. 查詢出其2號課程成績比所有1號課程成績都低那些學生的學號. 方法一(用ALL): 方法二(用Min):
SELECT Sno FROM SC WHERE Cno='1' INTERSECT SELECT Sno FROM SC WHERE Cno='2' 集合運算,列的數目、類型要一致如果還報錯,那就考慮別的語法吧,not in或者not exists 列值不一樣的記錄,在集合想減時減不掉,所以要把cno和grade列去掉
就這么多了,希望能幫到你
更多建站問題,可搜一下「飄仙論壇」
3. 怎麼查詢「001」課程比「002」課程成績高的所有學生的學號表結構如下:
select a.sid, a.score as score1,b.score as score2 from (select * from scoretable where cid='001') a
left join
(select * from scoretable where cid='002')b
on a.sid=b.sid
where a.score>b.score
4. 在mysql中怎麼查 課程1總分比課程2總分多多少 結果能顯示為一個數據嗎, 學生表 s(
你這裡面只有學生表,課程表和班級表沒有分數的表啊
5. 查詢出其2號課程成績比所有1號課程成績都低那些學生的學號. 方法一(用ALL)
select 學號 from 選課表 where 成績< all(select 成績 from 選課表 where 課程號=1) and 課程號=2;
6. 查詢所有考試01號課程分數比所有02號課程分數高的學生學號,姓名
select 學號,姓名 from 學生表 where((select 成績 from 成績表 where 課程編號='01號')>(select 成績 from 成績表 where 課程編號='02號')
我也是初學的,應該這這樣的吧.
7. oracle 怎麼查詢科目一比科目二成績高的學生ID
select stu_id,avg(成績) from 表 group by stu_id;
現在學生都喜歡網路知道呀,前兩天遇見問和你一模一樣的題的,除了提問的主題不一樣,內容全是一樣,呵呵!
8. 資料庫查詢 查詢「001」課程比「002」課程成績高的所有學生的學號
分析如下:
--1selectSC1.S#fromSCSC1JOINSCSC2ONSC1.S#=SC2.S#
WHERESC1.C#='001'ANDSC2.C#='002'ANDSC1.score>SC2.score
--2selectS#,AVG(score)
平均成績fromSCgroupbyS#
havingAVG(score)>60--3selectStudent.S#,
Sname,COUNT(*)選課數,SUM(score)總成績
fromStudentJOINSConStudent.S#=SC.S#
groupbyStudent.S#,Sname
(8)查詢課程1比課程2成績高的學生擴展閱讀:
資料庫操作的注意事項
1、對查詢進行優化,要盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。
2、應盡量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:select id from t where num is null
最好不要給資料庫留NULL,盡可能的使用NOT NULL填充資料庫.
備注、描述、評論之類的可以設置為NULL,其他的,最好不要使用NULL。
不要以為NULL不需要空間,比如:char(100)型,在欄位建立時,空間就固定了,不管是否插入值(NULL也包含在內),都是佔用100個字元的空間的,如果是varchar這樣的變長欄位,null不佔用空間。
可以在num上設置默認值0,確保表中num列沒有null值,然後這樣查詢:select id from t where num = 0
3、應盡量避免在 where 子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃描。
4、應盡量避免在 where 子句中使用 or 來連接條件,如果一個欄位有索引,一個欄位沒有索引,將導致引擎放棄使用索引而進行全表掃描,如:select id from t where num=10 or Name = 'admin'
可以這樣查詢:
select id from t where num = 10
union all
select id from t where Name = 'admin'
5、in 和 not in 也要慎用,否則會導致全表掃描,如:select id from t where num in(1,2,3)
對於連續的數值,能用 between 就不要用 in 了:select id from t where num between 1 and 3
很多時候用exists 代替 in是一個好的選擇:select num from a where num in(select num from b)
用下面的語句替換:select num from a where exists(select 1 from b where num=a.num)
6、下面的查詢也將導致全表掃描:select id from t where name like 『%abc%』
若要提高效率,可以考慮全文檢索。
7、如果在 where 子句中使用參數,也會導致全表掃描。因為SQL只有在運行時才會解析局部變數,但優化程序不能將訪問計劃的選擇推遲到運行時;它必須在編譯時進行選擇。然 而,如果在編譯時建立訪問計劃,變數的值還是未知的,因而無法作為索引選擇的輸入項。
9. 急求SQL:查詢出其2號課程成績比所有1號課程成績都低那些學生的學號。
select 學號 from 選課表 where 課程號 = 2 and 成績 <
(select min(成績) from 選課表 where 課程號 = 1 )
這是習題吧 ?????
10. 有一張學生表 欄位有:學生編號 ,學生成績,科目 sql怎麼查詢科目一成績比科目二高的 學生編號
SELECT a.編號 FROM(
SELECT 編號,成績 FROM student WHERE 科目=『科目一』
)AS a
LEFT JOIN (
SELECT 編號,成績 FROM student WHERE 科目=『科目二』
)AS b ON a.編號=b.編號
WHERE a.成績>b.成績