【数据库程序设计】week 2-基础语法巩固

  • 内容
  • 相关

上学期学习内容 TSQL基础语法
数据库的表的创建 数据表的增删改查select(条件查询 排序 分组 聚合连接查询,嵌套查询 )视图


本学期学习 数据库 程序设计
int if while for 自定义函数 指针 结构体 。培养基于数据的编程思维为今后打好基础 ;软件开发 大数据 --分布式应用

 

查询 产品类别为Confections, 供应商国家来自Germany 的所有产品

一、连接查询,目的是扩充表的属性

select *
from Production.Products as pp,Production.Suppliers as ps,Production.Categories pc
where pp.supplierid=ps.supplierid and pp.categoryid=pc.categoryid
and ps.country ='Germany' and pc.categoryname='Confections'

1.png

二、嵌套查询

select *  from  Production.Products
where  supplierid in 
(
	select  supplierid from  Production.Suppliers 
	where country='Germany'
)
and categoryid in
(
   select categoryid from Production.Categories
   where categoryname='Confections'
)

2.png

查询 2007年产品类别为Confections 的各产品的产品编号 产品名称 总销售金额

(1)订单日期在2007年的所有订单

  select *  from  Sales.Orders 
  where   orderdate >= '20070101' 
  and  orderdate<'20080101' 

3.png

(2)找出第(1)步订单销售的所有产品
    select *  from  Sales.OrderDetails
    where  orderid  in
    (
		select   orderid  from  Sales.Orders 
	    where   orderdate >= '20070101' 
	    and  orderdate<'20080101'
    )

4.png

 

(3)算出第(2)步中的每条记录的销售金额
     select *  ,  
     sod.unitprice*sod.qty*(1-sod.discount)  as  totalmoney      
     from  Sales.OrderDetails as sod
    where  sod.orderid  in
    (
		select   orderid  from  Sales.Orders 
	    where   orderdate >= '20070101' 
	    and  orderdate<'20080101'
    )

 

5.png

 

(4)表连接 扩展出产品名和产品类别名 后  过滤出产品类别为Confections 的数据  
   
    select  *  
    from   
    (
    
		select *  ,  
		 sod.unitprice*sod.qty*(1-sod.discount)  as  totalmoney      
		 from  Sales.OrderDetails as sod
		where  sod.orderid  in
		(
			select   orderid  from  Sales.Orders 
			where   orderdate >= '20070101' 
			and  orderdate<'20080101'
		)
    ) as  T,
    Production.Categories as pc,
    Production.Products as pp
    where  T.productid = pp.productid
    and  pp.categoryid=pc.categoryid
    and  pc.categoryname='Confections'
   

6.png

--(5)在第4步的基础上按产品Id分组,统计每组内的总金额
     
     select  K.productid,K.productname  ,   
     sum( K.totalmoney )  as totalmoney    ----统计分组内的总金额
     from 
    ( 
		select  T.*, pc.categoryid,pc.categoryname ,pp.productname     
		from   
		(
	    
			select *  ,  
			 sod.unitprice*sod.qty*(1-sod.discount)  as  totalmoney      
			 from  Sales.OrderDetails as sod
			where  sod.orderid  in
			(
				select   orderid  from  Sales.Orders 
				where   orderdate >= '20070101' 
				and  orderdate<'20080101'
			)
		) as  T,
		Production.Categories as pc,
		Production.Products as pp
		where  T.productid = pp.productid
		and  pp.categoryid=pc.categoryid
		and  pc.categoryname='Confections'
    ) as K
    group by  K.productid,K.productname
    
    --select  *  from  Production.Products  
    --where categoryid=3

 

 

 

 

 

7.png

 

本文标签:

版权声明:若无特殊注明,本文皆为《G4br1el》原创,转载请保留文章出处。

本文链接:【数据库程序设计】week 2-基础语法巩固 - https://www.itznxh.com/post-48.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

未显示?请点击刷新