ITPUB论坛-中国最专业的IT技术社区

 
 注册
热搜:
查看: 181|回复: 2

[SQL] 怎样写这条统计销量、城市数、客户数的sql语句

[复制链接]
论坛徽章:
3
火眼金睛
日期:2017-08-01 17:00:03技术图书徽章
日期:2017-07-25 17:34:38目光如炬
日期:2017-07-30 22:00:00
跳转到指定楼层
1#
发表于 2017-12-2 17:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 net205 于 2017-12-2 17:46 编辑

在oracle中,我有一个类似这样的视图, 是订单明细相关的数据, 包括订单id, 订单明细id,订购的商品id, 订购的商品名称, 商品单位,订购数量, 单价,订购的客户名称, 客户所在国家和城市。类似下面这样:

OrderId    OrderDetailId    GoodsId    GoodsName    UnitName    SalesQty    Price    CustomerName    Country    City  

200138   ddd0a3b42adb   770   A   bag      5    18.00   AAAA    USA     NewYork  
223448   70ca7ceb41c7   193   D   bottle   10   10.00   BBB     USA     NewYork  
200118   ab472857573e   1286  F   cup      8    50.00   CCC     China   Beijing   
244028   230a43920667   770   A   bag      20   18.00   CCC     China   Beijing   
251118   118fc2b3839b   5929  C   box      40   6.00    DDDD    Japan   Tokyo   
200000   abd0a3b42ddd   770   A   bag      15   18.00   AAAA    USA     NewYork  
111118   11111113839b   5929  C   box      40   6.00    FFFF    Japan   Tokyo   


然后我要写一条统计的sql语句, 统计每个商品的销量和、这个商品销售的客户数、这个商品销售的城市。  
同一个城市多次销售的客户或城市算1个。统计结果应该类似这样:
GoodsId    GoodsName    SalesQty(UnitName)    CityQty    CustomerQty   
770            A           40(bag)              2        2
193           D            10(bottle)           1        1
1286         F            8(cup)                1        1
5929         C           80(box)               2        1


请问这条sql语句怎么写?  谢谢!!!






论坛徽章:
4
秀才
日期:2017-08-11 15:38:46秀才
日期:2017-09-08 11:09:50秀才
日期:2017-09-25 15:10:28秀才
日期:2017-09-25 15:10:28
2#
发表于 2017-12-3 19:52 | 只看该作者
with t as (
select '200138' as a1,'ddd0a3b42adb' as a2,'770' as a3,'A' as a4,'bag' as a5,'5' as a6,'18.00' as a7,'AAAA' as a8,'USA' as a9,'NewYork' as a10 from dual
union all
select '223448' as a1,'70ca7ceb41c7' as a2,'193' as a3,'D' as a4,'bottle' as a5,'10' as a6,'10.00' as a7,'BBB' as a8,'USA' as a9,'NewYork' as a10 from dual
union all
select '200118' as a1,'ab472857573e' as a2,'1286' as a3,'F' as a4,'cup' as a5,'8' as a6,'50.00' as a7,'CCC' as a8,'China' as a9,'Beijing' as a10 from dual
union all
select '244028' as a1,'230a43920667' as a2,'770' as a3,'A' as a4,'bag' as a5,'20' as a6,'18.00' as a7,'CCC' as a8,'China' as a9,'Beijing' as a10 from dual
union all
select '251118' as a1,'118fc2b3839b' as a2,'5929' as a3,'C' as a4,'box' as a5,'40' as a6,'6.00' as a7,'DDDD' as a8,'Japan' as a9,'Tokyo' as a10 from dual
union all
select '200000' as a1,'abd0a3b42ddd' as a2,'770' as a3,'A' as a4,'bag' as a5,'15' as a6,'18.00' as a7,'AAAA' as a8,'USA' as a9,'NewYork' as a10 from dual
union all
select '111118' as a1,'11111113839b' as a2,'5929' as a3,'C' as a4,'box' as a5,'40' as a6,'6.00' as a7,'FFFF' as a8,'Japan' as a9,'Tokyo' as a10 from dual )
SELECT a3,
       a4,
       SUM(a6) || '(' || MAX(a5) || ')',
       COUNT(DISTINCT a8),
       COUNT(DISTINCT a10)
  FROM t
GROUP BY a3, a4
ORDER BY 2;

使用道具 举报

回复
论坛徽章:
3
火眼金睛
日期:2017-08-01 17:00:03技术图书徽章
日期:2017-07-25 17:34:38目光如炬
日期:2017-07-30 22:00:00
3#
 楼主| 发表于 2017-12-4 09:32 | 只看该作者
谢谢........

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 |
  | | |
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表