日期:2014-05-17  浏览次数:20519 次

两个表售销排行榜的查询
有两个表,一个是人员表User表 一个是销售表Order表

表情况如下:

User表

UserID UserName
  1 小一
  2 小二
  3 小三
  4 小四


Order表 
  OrderID OrderName OrderUnit OrderNum UserID
  1 产品一 3 1 2

  2 产品二 5 1 1

  3 产品四 3 1 2

  4 产品一 3 1 2

  5 产品三 3 1 2

  6 产品二 5 1 3

  7 产品一 3 1 2
   

想做一个按售销排行榜

比如第一名是谁 销售是多少!这样子排开

------解决方案--------------------
你这个订单表设计的有点。。。

SQL code

--按订单数
select User.UserID,
    min(User.UserName) 姓名,
    count([Order].OrderID) 订单数量
from [User] left join [Order] on User.UserID=[Order].UserID
group by User.UserID
order by 订单数量 desc;
--按销售数
select User.UserID,
    min(User.UserName) 姓名,
    sum(OrderUnit*OrderNum) 销售数量
from [User] left join [Order] on User.UserID=[Order].UserID
group by User.UserID
order by 销售数量 desc;

------解决方案--------------------
SQL code
--各个产品的销量情况
select b.[UserName],a.[OrderName],sum(a.[OrderUnit]*a.[OrderNum]) 销量 from [Order] a,[User] b
where a.[UserID]=b.[UserID]
group by b.[UserName],a.[OrderName]
order by a.[OrderName],sum(a.[OrderUnit]*a.[OrderNum]) desc

--总的销量情况
select b.[UserName],sum(a.[OrderUnit]*a.[OrderNum]) 销量 from [Order] a,[User] b
where a.[UserID]=b.[UserID]
group by b.[UserName]
order by sum(a.[OrderUnit]*a.[OrderNum]) desc

------解决方案--------------------
探讨

引用:
/*
排名 UserID UserName 销售
-------------------- ----------- -------- -----------
1 2 小二 15
2 3 ……