?http://hi.baidu.com/411129755/blog/?
?
1、說明:復制表(只復制結構,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、說明:拷貝表(拷貝數據,源表名:a 目標表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、說明:跨數據庫之間表的拷貝(具體數據使用絕對路徑) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具體數據庫’ where 條件
例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..
4、說明:子查詢(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
5、說明:顯示文章、提交人和最后回復時間
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、說明:外連接查詢(表名1:a 表名2:b)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
7、說明:在線視圖查詢(表名1:a )
select * from (SELECT a,b,c FROM a) T where t.a > 1;
8、說明:between的用法,between限制查詢數據范圍時包括了邊界值,not between不包括
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 數值1 and 數值2
9、說明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、說明:兩張關聯表,刪除主表中已經在副表中沒有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
11、說明:四表聯查問題:
select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
12、說明:日程安排提前五分鐘提醒
SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5
13、說明:一條sql 語句搞定數據庫分頁
select top 10 b.* from (select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主鍵字段 =
a.主鍵字段 order by a.排序字段
14、說明:前10條記錄
select top 10 * form table1 where 范圍
15、說明:選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產品分析
,按科目成績排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、說明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重復行而派生出一個結果表
(select a from tableA ) except (select a from tableB) except (select a from tableC)
17、說明:隨機取出10條數據
select top 10 * from tablename order by newid()
18、說明:隨機選擇記錄
select newid()
19、說明:刪除重復記錄
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、說明:列出數據庫里所有的表名
select name from sysobjects where type='U'
21、說明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select 中的case。
select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case
vender when 'B' then pcs else 0 end) FROM tablename group by type
顯示結果:
type vender pcs
電腦 A 1
電腦 A 1
光盤 B 2
光盤 A 2
手機 B 3
手機 C 3
23、說明:初始化表table1
TRUNCATE TABLE table1
24、說明:選擇從10到15的記錄
select top 5 * from (select top 15 * from table order by id asc) table_別名 order by id desc
--------------------------------------------------------------------------------
動態sql語句基本語法
1 :普通SQL語句可以用Exec執行
eg: Select * from tableName
Exec('select * from tableName')
Exec sp_executesql N'select * from tableName' -- 請注意字符串前一定要加N
2:字段名,表名,數據庫名之類作為變量時,必須用動態SQL
eg:
declare @fname varchar(20)
set @fname = 'FiledName'
Select @fname from tableName -- 錯誤,不會提示錯誤,但結果為固定值FiledName,并非所要。
Exec('select ' + @fname + ' from tableName') -- 請注意 加號前后的 單引號的邊上加空格
當然將字符串改成變量的形式也可
declare @fname varchar(20)
set @fname = 'FiledName' --設置字段名
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句會報錯
declare @s Nvarchar(1000) -- 注意此處改為nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正確
3. 輸出參數
declare @num int,
@sqls nvarchar(4000)
set @sqls='select count(*) from tableName'
exec(@sqls)
--如何將exec執行結果放入變量中?
declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
select * from sysobjects where xtype='tr' --返回庫中觸發器
select * from sysobjects where xtype='U' --返回庫中用戶表
1.日期算當月天數:
?? select Day(dateadd(day,-1,convert(datetime,convert(char(07),dateadd(m,1,getdate()),120)+'-01')))
?? select 32-Day(getdate()+(32-Day(getdate())))
2.簡單的分割字串:
?? 用' union all select 'replace'分割符'
Order By可以指定列序而不用指定列名,在下面的例子里說明它的用處(注意,第三列未指定別名)
Select a.ID,a.Name,(Select Count(*) From TableB b Where a.ID=b.PID) From TableA a Order By 3
--修改用戶數據庫的排序規則
ater database dbname collate SQL_Latin1_General_CP1_CI_AS
--修改字段的排序規則
alter table a alter column c2 varchar(50) collate SQL_Latin1_General_CP1_CI_AS
--按姓氏筆畫排序
select * from 表名 order by 列名 Collate Chinese_PRC_Stroke_ci_as
--按拼音首字母排序
select * from 表名 order by 列名 Collate Chinese_PRC_CS_AS_KS_WS
--查找一個Server下含有某個表名的數據庫名字
EXEC sp_msforeachdb '
USE [?]
IF OBJECT_ID(N''表名'') IS NOT NULL
PRINT N''?'''
--查詢所有表名、字段名及字段描述
select
??? 表名=object_name(id),
??? 列名=col_name(object_id(object_name(id)),smallid),
??? 描述=value
from sysproperties
--查詢所有表的記錄數明細
--方法(1)
select
??? a.name,b.rows
from
??? sysobjects a, sysindexes b
where
??? a.name=b.name and a.type='u'
--方法(2)
sp_msforeachtable 'select ''?'' as ''表名'',(select sum(1) from ?) as ''記錄數'''
--復制表(表結構)
--方法(1)
select * into Employee_bak from Employee where 1<>1
--方法(2)
select top 0 * into Employee_bak from Employee
--方法(3)
--企業管理器中的右鍵表-->復制,然后在查詢分析器中粘貼查看SQL語句
--判斷兩字符是否完全(區分大小寫)相等(如何判斷字符的大小寫)
declare @v nvarchar(10)
declare @p nvarchar(10)
set @v='NIPSAN'
if cast(@v as varbinary)= cast(@p as varbinary)
??? print N'相等'
else??
??? print N'不等'
--得到數據庫中所有表的空間/記錄情況
exec sp_MSForEachTable
@precommand=N'
create table ##(
id int identity,
表名 sysname,
字段數 int,
記錄數 int,
保留空間 Nvarchar(10),
使用空間 varchar(10),
索引使用空間 varchar(10),
未用空間 varchar(10))',
@command1=N'insert ##(表名,記錄數,保留空間,使用空間,索引使用空間,未用空間) exec sp_spaceused ''?''
update ## set 字段數=(select count(*) from syscolumns where id=object_id(''?''))
where id=scope_identity()', @postcommand=N'select * from ## order by id drop table ##'
--查看硬盤分區:
EXEC master..xp_fixeddrives
--Order By的一個小技巧
/*
Order By可以指定列序而不用指定列名,在下面的例子里說明它的用處(注意,第三列未指定別名)
Select a.ID,a.Name,(Select Count(*) From TableB b Where a.ID=b.PID) From TableA a Order By 3
*/
表結構新
SELECT
表名=case when a.colorder=1 then d.name else '' end,
表說明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序號=a.colorder,
字段名=a.name,
標識=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主鍵=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
))) then '√' else '' end,
類型=b.name,
占用字節數=a.length,
長度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小數位數=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允許空=case when a.isnullable=1 then '√'else '' end,
默認值=isnull(e.text,''),
字段說明=isnull(g.[value],''),
索引名稱=isnull(h.索引名稱,''),
索引順序=isnull(h.排序,'')
FROM syscolumns a
left join systypes b on a.xtype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.status>=0
left join syscomments e on a.cdefault=e.id
left join sysproperties g on a.id=g.id and a.colid=g.smallid
left join sysproperties f on d.id=f.id and f.smallid=0
left join(--這部分是索引信息,如果要顯示索引與表及字段的對應關系,可以只要此部分
select 索引名稱=a.name,c.id,d.colid
,排序=case indexkey_property(c.id,b.indid,b.keyno,'isdescending')
when 1 then '降序' when 0 then '升序' end
from sysindexes a
join sysindexkeys b on a.id=b.id and a.indid=b.indid
join (--這里的作用是有多個索引時,取索引號最小的那個
select id,colid,indid=min(indid) from sysindexkeys
group by id,colid) b1 on b.id=b1.id and b.colid=b1.colid and b.indid=b1.indid
join sysobjects c on b.id=c.id and c.xtype='U' and c.status>=0
join syscolumns d on b.id=d.id and b.colid=d.colid
where a.indid not in(0,255)
) h on a.id=h.id and a.colid=h.colid
--where d.name='要查詢的表'??? --如果只查詢指定表,加上此條件
order by a.id,a.colorder
--索引信息
--索引信息
select 索引名稱=case when b.keyno=1 then a.name else '' end
,表名=case when b.keyno=1 then c.name else '' end
,列名=d.name
,排序=case indexkey_property(c.id,b.indid,b.keyno,'isdescending')
when 1 then '降序' when 0 then '升序' end
,聚集=INDEXPROPERTY(c.id,a.name,'IsClustered')
,唯一=case INDEXPROPERTY(c.id,a.name,'IsUnique')
when 0 then '非唯一'
when 1 then case when e.id is null then '唯一索引' else '唯一約束' end
end
,e.name
,填充因子=a.OrigFillFactor
from sysindexes a
join sysindexkeys b on a.id=b.id and a.indid=b.indid
--join (--這里的作用是有多個索引時,取索引號最小的那個
--select id,colid,indid=min(indid) from sysindexkeys
--group by id,colid) b1 on b.id=b1.id and b.colid=b1.colid and b.indid=b1.indid
join sysobjects c on b.id=c.id and c.xtype='U' and c.status>=0
join syscolumns d on b.id=d.id and b.colid=d.colid
left join sysobjects e on b.indid=e.id and e.xtype='UQ'
where a.indid not in(0,255)
order by c.name,a.name
找出表中某一列相同的數據行
select *from table where (column in(select column from table group by column having count(*)>1)
--1、查找員工的編號、姓名、部門和出生日期,如果出生日期為空值,
--顯示日期不詳,并按部門排序輸出,日期格式為yyyy-mm-dd。
select emp_no ,emp_name ,dept ,
?????? isnull(convert(char(10),birthday,120),'日期不詳') birthday
from employee
order by dept
--2、查找與喻自強在同一個單位的員工姓名、性別、部門和職稱
select emp_no,emp_name,dept,title
from employee
where emp_name<>'喻自強' and dept in
?? (select dept from employee
??? where emp_name='喻自強')
--3、按部門進行匯總,統計每個部門的總工資
select dept,sum(salary)
from employee
group by dept
--4、查找商品名稱為14寸顯示器商品的銷售情況,
--顯示該商品的編號、銷售數量、單價和金額
select a.prod_id,qty,unit_price,unit_price*qty totprice
from sale_item a,product b
where a.prod_id=b.prod_id and prod_name='14寸顯示器'
--5、在銷售明細表中按產品編號進行匯總,統計每種產品的銷售數量和金額
select prod_id,sum(qty) totqty,sum(qty*unit_price) totprice
from sale_item
group by prod_id
--6、使用convert函數按客戶編號統計每個客戶1996年的訂單總金額
select cust_id,sum(tot_amt) totprice
from sales
where convert(char(4),order_date,120)='1996'
group by cust_id
--7、查找有銷售記錄的客戶編號、名稱和訂單總額
select a.cust_id,cust_name,sum(tot_amt) totprice
from customer a,sales b
where a.cust_id=b.cust_id
group by a.cust_id,cust_name
--8、查找在1997年中有銷售記錄的客戶編號、名稱和訂單總額
select a.cust_id,cust_name,sum(tot_amt) totprice
from customer a,sales b
where a.cust_id=b.cust_id and convert(char(4),order_date,120)='1997'
group by a.cust_id,cust_name
--9、查找一次銷售最大的銷售記錄
select order_no,cust_id,sale_id,tot_amt
from sales
where tot_amt=
?? (select max(tot_amt)
??? from sales)
--10、查找至少有3次銷售的業務員名單和銷售日期
select emp_name,order_date
from employee a,sales b
where emp_no=sale_id and a.emp_no in
(select sale_id
?? from sales
?? group by sale_id
?? having count(*)>=3)
order by emp_name
--11、用存在量詞查找沒有訂貨記錄的客戶名稱
select cust_name
from customer a
where not exists
?? (select *
??? from sales b
??? where a.cust_id=b.cust_id)
--12、使用左外連接查找每個客戶的客戶編號、名稱、訂貨日期、訂單金額
--訂貨日期不要顯示時間,日期格式為yyyy-mm-dd
--按客戶編號排序,同一客戶再按訂單降序排序輸出
select a.cust_id,cust_name,convert(char(10),order_date,120),tot_amt
from customer a left outer join sales b on a.cust_id=b.cust_id
order by a.cust_id,tot_amt desc
--13、查找16M DRAM的銷售情況,要求顯示相應的銷售員的姓名、
--性別,銷售日期、銷售數量和金額,其中性別用男、女表示
select emp_name 姓名, 性別= case a.sex when 'm' then '男'
?????????????????????????????????????? when 'f' then '女'
?????????????????????????????????????? else '未'
?????????????????????????????????????? end,
??????? 銷售日期= isnull(convert(char(10),c.order_date,120),'日期不詳'),
??????? qty 數量, qty*unit_price as 金額
from employee a, sales b, sale_item c,product d
where d.prod_name='16M DRAM' and d.pro_id=c.prod_id and
????? a.emp_no=b.sale_id and b.order_no=c.order_no
--14、查找每個人的銷售記錄,要求顯示銷售員的編號、姓名、性別、
--產品名稱、數量、單價、金額和銷售日期
select emp_no 編號,emp_name 姓名, 性別= case a.sex when 'm' then '男'
?????????????????????????????????????? when 'f' then '女'
?????????????????????????????????????? else '未'
?????????????????????????????????????? end,
????? prod_name 產品名稱,銷售日期= isnull(convert(char(10),c.order_date,120),'日期不詳'),
????? qty 數量, qty*unit_price as 金額
from employee a left outer join sales b on a.emp_no=b.sale_id , sale_item c,product d
where d.pro_id=c.prod_id and b.order_no=c.order_no
--15、查找銷售金額最大的客戶名稱和總貨款
select cust_name,d.cust_sum
from?? customer a,
?????? (select cust_id,cust_sum
??????? from (select cust_id, sum(tot_amt) as cust_sum
????????????? from sales
????????????? group by cust_id ) b
??????? where b.cust_sum =
?????????????? ( select max(cust_sum)
???????????????? from (select cust_id, sum(tot_amt) as cust_sum
?????????????????????? from sales
?????????????????????? group by cust_id ) c )
??????? ) d
where a.cust_id=d.cust_id
--16、查找銷售總額少于1000元的銷售員編號、姓名和銷售額
select emp_no,emp_name,d.sale_sum
from?? employee a,
?????? (select sale_id,sale_sum
??????? from (select sale_id, sum(tot_amt) as sale_sum
????????????? from sales
????????????? group by sale_id ) b
??????? where b.sale_sum <1000?????????????
??????? ) d
where a.emp_no=d.sale_id
--17、查找至少銷售了3種商品的客戶編號、客戶名稱、商品編號、商品名稱、數量和金額
select a.cust_id,cust_name,b.prod_id,prod_name,d.qty,d.qty*d.unit_price
from customer a, product b, sales c, sale_item d
where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
????? c.order_no=d.order_no and a.cust_id in (
????? select cust_id
????? from (select cust_id,count(distinct prod_id) prodid
???????????? from (select cust_id,prod_id
?????????????????? from sales e,sale_item f
?????????????????? where e.order_no=f.order_no) g
???????????? group by cust_id
???????????? having count(distinct prod_id)>=3) h )
--18、查找至少與世界技術開發公司銷售相同的客戶編號、名稱和商品編號、商品名稱、數量和金額
select a.cust_id,cust_name,d.prod_id,prod_name,qty,qty*unit_price
from customer a, product b, sales c, sale_item d
where a.cust_id=c.cust_id and d.prod_id=b.prod_id and
????? c.order_no=d.order_no and not exists
(select f.*
?? from customer x ,sales e, sale_item f
?? where cust_name='世界技術開發公司' and x.cust_id=e.cust_id and
???????? e.order_no=f.order_no and not exists
?????????? ( select g.*
???????????? from sale_item g, sales h
???????????? where g.prod_id = f.prod_id and g.order_no=h.order_no and
?????????????????? h.cust_id=a.cust_id)
??? )
19、查找表中所有姓劉的職工的工號,部門,薪水
select emp_no,emp_name,dept,salary
from employee
where emp_name like '劉%'
20、查找所有定單金額高于20000的所有客戶編號
select cust_id
from sales
where tot_amt>20000
21、統計表中員工的薪水在40000-60000之間的人數
select count(*)as 人數
from employee
where salary between 40000 and 60000
22、查詢表中的同一部門的職工的平均工資,但只查詢"住址"是"上海市"的員工
select avg(salary) avg_sal,dept
from employee
where addr like '上海市%'
group by dept
23、將表中住址為"上海市"的員工住址改為"北京市"
update employee
set addr like '北京市'
where addr like '上海市'
24、查找業務部或會計部的女員工的基本信息。
select emp_no,emp_name,dept
from employee
where sex='F'and dept in ('業務','會計')
25、顯示每種產品的銷售金額總和,并依銷售金額由大到小輸出。
select prod_id ,sum(qty*unit_price)
from sale_item
group by prod_id
order by sum(qty*unit_price) desc
26、選取編號界于‘C0001’和‘C0004’的客戶編號、客戶名稱、客戶地址。
select CUST_ID,cust_name,addr
from customer
where cust_id between 'C0001' AND 'C0004'
27、計算出一共銷售了幾種產品。
select count(distinct prod_id) as '共銷售產品數'
from sale_item
28、將業務部員工的薪水上調3%。
update employee
set salary=salary*1.03
where dept='業務'
??
29、由employee表中查找出薪水最低的員工信息。
select *
from employee
where salary=
?????? (select min(salary )
??????? from employee )
30、使用join查詢客戶姓名為"客戶丙"所購貨物的"客戶名稱","定單金額","定貨日期","電話號碼"
select a.cust_id,b.tot_amt,b.order_date,a.tel_no
from customer a join sales b
on a.cust_id=b.cust_id and cust_name like '客戶丙'
31、由sales表中查找出訂單金額大于“E0013業務員在1996/10/15這天所接每一張訂單的金額”的所有訂單。
select *
from sales
where tot_amt>all
?????? (select tot_amt
??????? from sales
??????? where sale_id='E0013'and order_date='1996/10/15')
order by tot_amt
32、計算'P0001'產品的平均銷售單價
select avg(unit_price)
from sale_item
where prod_id='P0001'
33、找出公司女員工所接的定單
select sale_id,tot_amt
from sales
where sale_id in
(select sale_id from employee
where sex='F')
34、找出同一天進入公司服務的員工
select a.emp_no,a.emp_name,a.date_hired
from employee a
join employee b
on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)
order by a.date_hired
35、找出目前業績超過232000元的員工編號和姓名。
select emp_no,emp_name
from employee
where emp_no in
(select sale_id
from sales
group by sale_id
having sum(tot_amt)<232000)
36、查詢出employee表中所有女職工的平均工資和住址在"上海市"的所有女職工的平均工資
select avg(salary)
from employee
where sex like 'f'
union
select avg(salary)
from employee
where sex like 'f' and addr like '上海市%'
37、在employee表中查詢薪水超過員工平均薪水的員工信息。
Select * from employee where salary>(select avg(salary) from employee)
38、找出目前銷售業績超過40000元的業務員編號及銷售業績,并按銷售業績從大到小排序。
?? Select sale_id ,sum(tot_amt)
from sales
group by sale_id
having sum(tot_amt)>40000
order by sum(tot_amt) desc
39、找出公司男業務員所接且訂單金額超過2000元的訂單號及訂單金額。
??? Select order_no,tot_amt
From sales ,employee
Where sale_id=emp_no and sex='M' and tot_amt>2000
40、查詢sales表中訂單金額最高的訂單號及訂單金額。
Select order_no,tot_amt from sales where tot_amt=(select max(tot_amt) from sales)
41、查詢在每張訂單中訂購金額超過24000元的客戶名及其地址。
Select cust_name,addr from customer a,sales b where a.cust_id=b.cust_id and tot_amt>24000
42、求出每位客戶的總訂購金額,顯示出客戶號及總訂購金額,并按總訂購金額降序排列。
?? Select cust_id,sum(tot_amt) from sales
Group by cust_id
Order by sum(tot_amt) desc
43、求每位客戶訂購的每種產品的總數量及平均單價,并按客戶號,產品號從小到大排列。
??? Select cust_id,prod_id,sum(qty),sum(qty*unit_price)/sum(qty)
From sales a, sale_item b
Where a.order_no=b.order_no
Group by cust_id,prod_id
Order by cust_id,prod_id
44、查詢訂購了三種以上產品的訂單號。
??? Select order_no from sale_item
Group by order_no
Having count(*)>3
45、查詢訂購的產品至少包含了訂單10003中所訂購產品的訂單。
?? Select distinct order_no
From sale_item a
Where order_no<>'10003'and not exists (
Select * from sale_item b where order_no ='10003' and not exists
(select * from sale_item c where c.order_no=a.order_no and c.prod_id=b.prod_id))
46、在sales表中查找出訂單金額大于“E0013業務員在1996/11/10這天所接每一張訂單的金額”的所有訂單,并顯示承接這些訂單的業
務員和該訂單的金額。
?? Select sale_id,tot_amt from sales
?? where tot_amt>all(select tot_amt from sales where sale_id='E0013' and order_date='1996/11/10')
47、查詢末承接業務的員工的信息。
??? Select *
From employee a
Where not exists
(select * from sales b where a.emp_no=b.sale_id)
48、查詢來自上海市的客戶的姓名,電話、訂單號及訂單金額。
??? Select cust_name,tel_no,order_no,tot_amt
From customer a ,sales b
Where a.cust_id=b.cust_id and addr='上海市'
49、查詢每位業務員各個月的業績,并按業務員編號、月份降序排序。
?? Select sale_id,month(order_date), sum(tot_amt)
from sales
group by sale_id,month(order_date)
order by sale_id,month(order_date) desc
50、求每種產品的總銷售數量及總銷售金額,要求顯示出產品編號、產品名稱,總數量及總金額,并按產品號從小到大排列。
?? Select a.prod_id,prod_name,sum(qty),sum(qty*unit_price)
From sale_item a,product b
Where a.prod_id=b.prod_id
Group by a.prod_id,prod_name
Order by a.prod_id
51、查詢總訂購金額超過’C0002’客戶的總訂購金額的客戶號,客戶名及其住址。
?? Select cust_id, cust_name,addr
From customer
Where cust_id in (select cust_id from sales
Group by cust_id
Having sum(tot_amt)>
(Select sum(tot_amt) from sales where cust_id='C0002'))
52、查詢業績最好的的業務員號、業務員名及其總銷售金額。
??? select emp_no,emp_name,sum(tot_amt)
from employee a,sales b
where a.emp_no=b.sale_id
group by emp_no,emp_name
having sum(tot_amt)=
???????? (select max(totamt)
????????? from (select sale_id,sum(tot_amt) totamt
?????????????? from sales
?????????????? group by sale_id) c)
53、查詢每位客戶所訂購的每種產品的詳細清單,要求顯示出客戶號,客戶名,產品號,產品名,數量及單價。
?? select a.cust_id, cust_name,c.prod_id,prod_name,qty, unit_price
from customer a,sales b, sale_item c ,product d
where a.cust_id=b.cust_id and b.order_no=c.order_no and c.prod_id=d.prod_id
54、求各部門的平均薪水,要求按平均薪水從小到大排序。
?? select dept,avg(salary) from employee group by dept order by avg(salary)
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
