⑴ 資料庫的復雜查詢
希望可以幫到你
--查詢選修了「計算機體系結構」的學生的基本信息。
select *
from 學生
where 學號 in
(select 學號
from 選課
where 課程號 in
(select 課程號
from 課程
where 課程名稱='計算機體系結構'))
--查詢年齡比李勇小的學生的學號和成績。
select 學號,成績
from 選課
where 學號 in
(select 學號
from 學生
where 年齡<
(select 年齡
from 學生
where 姓名 ='李勇'))
--查詢其他系中比系編號為「D1」的學生中年齡最小者要最大的學生的信息。
select *
from 學生
where 系編號<>'D1'and 年齡>
(select min (年齡)
from 學生
where 系編號='D1')
--查詢其他系中比系編號為「D3」的學生年齡都大的學生的姓名。
select 姓名
from 學生
where 系編號<>'D3'and 年齡>all
(select 年齡
from 學生
where 系編號='D3')
--查詢「C1」課程的成績高於70分的學生姓名。
select 姓名
from 學生
where 學號 in
(select 學號
from 選課
where 課程號 ='C1'and 成績>70)
--查詢「C1」課程的成績不高於70分的學生姓名。
select 姓名
from 學生
where 學號 in
(select 學號
from 選課
where 課程號 ='C1'and 成績<=70)
--查詢選修了所有課程的學生姓名。
select 姓名
from 學生
where not exists
(select *
from 課程
where not exists
(select *
from 選課
where 學生.學號=選課.學號 and 課程.課程號=選課.課程號))
--查詢學校開設的課程總數。
select count(*)
from 課程
--查詢選修兩門以上課程的學生姓名。
select 姓名
from 學生
where 學號 in
(select 學號
from 選課 group by 學號 having count(*)>=2)
--查詢開設的課程和選修該課程的學生的總成績、平均成績、最高成績和最低成績。
select 課程號,sum(成績),avg(成績),max(成績),min(成績)
from 選課 group by 課程號
--查詢系編號為「D2」或選修課程的最低成績大於等於60分的學生信息。
select *
from 學生
where 系編號='D2'
union
select *
from 學生
where 學號 in
(select 學號
from 選課 group by 學號 having min(成績)>=60)
⑵ 復雜的資料庫查詢問題
sql">select
class
,sum()as'[年齡在10-20的人數]'
,sum(casewhenage>20then1else0end)as'[年齡在20以上的人數]'
,sum(casewhensex='男'then1else0end)as'[男生人數]'
from
表名
groupby
class
⑶ sql的復雜查詢問題:
no,date,attendance
12 2010-10-10 Y
13 2010-11-12 N
1)
思路:先查工資大於8000,再並列查詢,小於5次
2010年小於5次的
select A.no count(A.no) from Attend A where attendance group by substring(date,0,4) having count(A.no)<5
故,綜上得出結論
select E.no,E.name from Employee E left join Wage W on E.no=W.no left join (select A.no count(A.no) from Attend A where attendance group by substring(date,0,4) having count(A.no)<5)A on E.no=A.no where W.amount > 8000;
2)
思路:先查工資平均數,分別查不同的日期即可
select W.amount/sum(W.amoun),A.no,A.attendance/sum(A.attendance) from Attend A left join Wage W on W.no=A.no where substring(date,0,6)='201212' group by A.no
select W.amount/sum(W.amoun),A.no,A.attendance/sum(A.attendance) from Attend A left join Wage W on W.no=A.no where substring(date,0,6)='201201' group by A.no
⑷ SQL資料庫系統原理中數據查詢問題,題目如下:
自定義的列名,因為你有用到函數,sum和avg是函數方法,那麼用它們查詢出來的結果,所顯示的列名
都是
「無列名」,那麼加了
as
什麼什麼
接在函數後面,那麼顯示查詢結果時,這個名稱就是它的列名,方便列作用的理解。
其實你只要將這條語句
分加
as...
和不加as..
到資料庫里執行一遍就能看出比對結果來了
⑸ 一個復雜的mysql資料庫查詢,誰能解決100分
SELECT inet_ntoa(ip_src) AS ip, count(*) AS num FROM iphdr WHERE
cid in (select b.cid cid from iphdr a,event b where a.cid=b.cid and b.timestamp>=DATE_SUB(CURDATE(),INTERVAL 1 DAY))
GROUP BY ip ORDER BY num DESC LIMIT 15
⑹ 資料庫 查詢問題 比較復雜篩選 高手進
簡單啊
首先把Equipment表的point屬性設置默認為0,防止為NULL時的很多麻煩事。
1.做個人物基本屬性表Basic
包含屬性name Skill1 Skill1Point Skill2 Skill2Point Skill3 Skill3Point Skill3 Skill3Point Skill4 Skill4Point
比如:我的基本屬性
金凝 千里眼 10 體力 10 耐力10 skill4 10 ( 不知道你的skill4是什麼 ) 而且也可以把人物的skill*Point的默認值設置為默認。
2.做個人物裝備表Part
包含屬性name Part1 Part2 Part3 Part4 Part5(Part*默認屬性為0)
比如:我的裝備
金凝 頭盔15 鎧甲11 0 0 護腿7(這樣就表示腰和手沒有裝備)
而頭裝備了頭盔15 身裝備了鎧甲11 腿裝備了護腿7
如果頭盔15 鎧甲11 護腿7的屬性分別為:
頭盔15 千里眼 5 體力 0 耐力 0 skill4 0
鎧甲11 千里眼 0 體力 2 耐力 3 skill4 0
護腿7 千里眼 6 體力 5 耐力 2 skill4 0
那麼人物屬性就通過Part表關聯起來了,這時可以做這樣的計算:
金凝的裝備後屬性為:
當name=金凝
Skill1Point=Basic.Skill1Point+Equipment.Skill1Point Skill2Point=Basic.Skill2Point+Equipment.Skill2Point
Skill3Point=Basic.Skill3Point+Equipment.Skill3Point
Skill4Point=Basic.Skill4Point+Equipment.Skill4Point
Skill5Point=Basic.Skill5Point+Equipment.Skill5Point
這一部分可以做成一個人物裝備後屬性表方便顯示。
⑺ SQL 單表復雜查詢問題
SELECT NAame,
Case
WHEN FirstGrade = 'weikao' THEN 'weikao'
WHEN FirstGrade = 'hege' THEN 'HEGE'
WHEN FirstGrade = 'buhege' THEN SecondGrade
END AS Grade
CASE
WHEN FirstGrade = 'weikao' THEN NULL
WHEN FirstGrade = 'hege' THEN FirstTime
WHEN FirstGrade = 'buhege' AND SecondGrade = 'hege' THEN SecondTime
ELSE NULL
END AS [Time]
FROM ACHV
結構如上所示,FirstGrade為初考成績 , SecondGrade為補考成績 Grade為最終需求的成績
同理,FirstTime為初考時間,SecondTime為補考時間,Time為最終需求時間。
⑻ 資料庫的復雜查詢
用union連接可以試試
select od.GoodsName,od.Price,od.Heavy,od.Number,od.Unit,od.TotalPrice,od.Notes,od.BatchNo,od.LotNo
from OrderDetail2 od where GoodsName in
(select GoodsName from OrderDetail2 od2 group by GoodsName having count(GoodsName)=1)
UNION
SELECT od.GoodsName,od.Price,od.Heavy,sum(od.Number) as Number,od.Unit,sum(od.TotalPrice) as TotalPrice,od.Notes,od.BatchNo,
(stuff((select ',' + LotNo from OrderDetail2 where BatchNo = od.BatchNo and GoodsName=od.GoodsName for xml path('')),1,1,'')) as lotNo
FROM OrderDetail2 od WHERE
(select count(*) from OrderDetail2 as od2 where od2.GoodsName=od.GoodsName
and od2.Price=od.Price and od2.Heavy=od.Heavy )>1
GROUP BY od.GoodsName,od.Price,od.Heavy,od.Unit,od.Notes,od.BatchNo
⑼ 資料庫,SQL查詢題目
--基礎題
--1.查詢讀者最喜愛的3種圖書分類號,即借閱表中出現最多的3類圖書分類號
SELECT TOP 3 [分類號] FROM [圖書] JOIN [借閱] ON [圖書].[圖書編號]=[借閱].[圖書編號]
GROUP BY [分類號] ORDER BY COUNT(*) DESC
--附加題
--1.查詢小於20歲的讀者最喜歡的3類圖書
SELECT TOP 3 [書名] FROM [讀者] JOIN [借閱] ON [讀者].[借書證號]=[借閱].[借書證號]
JOIN [圖書] ON [圖書].[圖書編號]=[借閱].[圖書編號]
WHERE [年齡]<20 GROUP BY [書名] ORDER BY COUNT(*) DESC
--2.查詢至少借閱了 寧靜 所借圖書(書名相同)的人的姓名
SELECT [姓名] FROM [讀者] WHERE [姓名]<>'寧靜' AND [借書證號] IN(SELECT [借書證號] FROM [借閱]
WHERE [圖書編號] IN(SELECT [圖書編號] FROM [讀者] JOIN [借閱] ON [讀者].[借書證號]=[借閱].[借書證號] WHERE [姓名]='寧靜'))
--3.查詢借閱了多於3本書且每本書價均高於60的讀者的借書證號
SELECT [借書證號]
FROM [借閱] JOIN [圖書] ON [圖書].[圖書編號]=[借閱].[圖書編號]
WHERE [單價]>60 GROUP BY [借書證號] HAVING COUNT(*)>3
GO
--4.假定讀者表中所有人姓名均不多於4個漢字,請建立一個查詢語句,要求根據名字中任意1個或兩個或3個或4個漢字,即可找到該讀者的詳細信息(即完全模糊查詢)
CREATE PROCEDURE CX
@XM VARCHAR(8) AS
IF LEN(@XM)=1 SELECT * FROM [讀者] WHERE @XM LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=2 SELECT * FROM [讀者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=3 SELECT * FROM [讀者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=4 SELECT * FROM [讀者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,3,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
GO
⑽ 一個比較復雜的sql問題,5個表聯表查詢,幫幫小弟
可以的,不過樓主你也給點分吧! 這么多,都不給分不厚道!
selectF.user_id,U.username
(
SELECTCOUNT(1)ASPLCOUNTFROMdiaryD
LEFTJOINdiscussPONP.key_id=D.ID
whered.user_id=F.user_id
)ASPLCOUNT,
(
SELECTCOUNT(1)ASDZCOUNTFROMdiaryD
LEFTJOINpraiseZONZ.praised_id=D.ID
whered.user_id=F.user_id
)ASplCount,
fromfriend_listF
LEFTJOINuser_idAONF.FRIEND_ID=A.user_id
LEFTJOINusernameUONU.user_id=F.user_id
WHEREA.user_id='XXXX'