免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2184 | 回复: 6
打印 上一主题 下一主题

请教oracle sql语句的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-21 09:32 |只看该作者 |倒序浏览
本帖最后由 qcgxlg 于 2011-02-21 10:02 编辑

各位大狭,请教个问题:

有这样的一组数据:

rq          lsh                          czy                     je
==========================================
20100101  100101001     2047            35.00
20100101  100101001     5357            35.00
20100101  100101002      2222           50.00
20100101  100101002      2568           50.00
20100102  100102001     3047           100.00
20100102  100102001      2538         100.00
20100102  100102002      3232         40.00
20100102  100102002      2565         40.00
20100103  100103001      2318        1000.00
20100103  100103001      2486        1000.00
20100103  100103001      2539        1000.00

数据是这样的:rq是日期, lsh为流水号,czy为操作员,当天一笔交易可能产生多笔流水, 现在我想统计交易笔数,也就是这样:

输出如下:

rq          lsh                            czy        je
============================================
20100101  100101001     2047      35.00
20100101  100101002      2222      50.00
20100102  100102001     3047       100.00
20100102  100102002      3232      40.00
20100103  100103001      2318     1000.00

请问这样的sql语句该怎么写?(数据库为oracle). 谢谢各位,这个问题困饶我好长时间了!

论坛徽章:
1
辰龙
日期:2013-11-20 14:55:50
2 [报告]
发表于 2011-02-21 11:46 |只看该作者
同一个流水号 怎么会出现多个操作员呢

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
3 [报告]
发表于 2011-02-21 12:09 |只看该作者
感觉数据是有点问题(或者库表设计得有点问题)。用distinct  lsh  应该可以,。

论坛徽章:
3
CU大牛徽章
日期:2013-09-18 15:16:55CU大牛徽章
日期:2013-09-18 15:18:22CU大牛徽章
日期:2013-09-18 15:18:43
4 [报告]
发表于 2011-02-21 13:49 |只看该作者
楼主描述不太清晰,数据与题干不一样,难以理解意思,不能提供帮助!

论坛徽章:
0
5 [报告]
发表于 2011-02-23 13:32 |只看该作者
SELECT   *
  FROM abcd
   WHERE ROWID IN (
                   SELECT   MIN (ROWID)
                     FROM abcd
                   GROUP BY a, b
                                  )
ORDER BY ROWID ASC
我创建了一个表abcd 有a b c d四列。把上面你的数据load进去,用这个sql能得到你的输出,但是数据多了不知道对不对,你应该说得再清楚点。

论坛徽章:
0
6 [报告]
发表于 2011-02-24 23:39 |只看该作者
本帖最后由 miloluo 于 2011-02-24 23:59 编辑

hi,
不太明白你说的意思:

你要统计“现在我想统计交易笔数” , 从那个地方那个看得出来?
你的例子也没有列举出所有结果集吧?
而且, 数据中如果有重复操作员id, 需要如何处理?
这些都没说清楚, 你最好能把业务说明白些。


虽然可能不太敢相信,但是我个人感觉你的意思可能是:

  1. SQL> select * from test
  2.   2  order by 1, 2, 3 ,4;

  3.         RQ        LSH        CZY         JE
  4. ---------- ---------- ---------- ----------
  5.   20100101  100101001       2047         35
  6.   20100101  100101001       5357         35
  7.   20100101  100101002       2222         50
  8.   20100101  100101002       2568         50
  9.   20100102  100102001       2538        100
  10.   20100102  100102001       3047        100
  11.   20100102  100102002       2565         40
  12.   20100102  100102002       3232         40
  13.   20100103  100103001       2318       1000
  14.   20100103  100103001       2486       1000
  15.   20100103  100103001       2539       1000

  16. 11 rows selected.

复制代码

论坛徽章:
0
7 [报告]
发表于 2011-02-26 09:35 |只看该作者
用max() keep(dense_rank first)试下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP