楼主: arron刘

【每周一议】干货讨论 如何合并两个查询的结果集的数据

[复制链接]
论坛徽章:
1
优秀写手
日期:2013-12-21 06:00:14
31#
发表于 2012-11-9 13:34 | 只看该作者
Oracle 11g,按照自己的想法写的.
  1. CREATE TABLE tablea
  2. (
  3. ID DATE,
  4. val NUMBER
  5. );

  6. CREATE TABLE tableb
  7. (
  8. ID DATE,
  9. val NUMBER
  10. );

  11. INSERT INTO tablea
  12.      VALUES (TO_DATE ('2012-11-1', 'YYYY-MM-DD'), 1);
  13. INSERT INTO tablea
  14.      VALUES (TO_DATE ('2012-11-2', 'YYYY-MM-DD'), 3);
  15. INSERT INTO tablea
  16.      VALUES (TO_DATE ('2012-11-5', 'YYYY-MM-DD'), 8);

  17. INSERT INTO tableb
  18.      VALUES (TO_DATE ('2012-11-1', 'YYYY-MM-DD'), 5);
  19. INSERT INTO tableb
  20.      VALUES (TO_DATE ('2012-11-2', 'YYYY-MM-DD'), 3);

  21. SELECT NVL (a.ID, b.ID) ID, NVL (a.val, 0) val1, NVL (b.val, 0) val2
  22.   FROM tablea a FULL JOIN tableb b ON a.ID = b.ID;
复制代码

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
32#
发表于 2012-11-9 21:52 | 只看该作者
Select   Vdate,sum(aid),sum(bid) from (
Select vdate as vdate ,vid as aid,0 as bid
From tab1
Union all
Select vdate as vdate,0 as aid,vid as bid
From tab2
)
Group by vdate

使用道具 举报

回复
论坛徽章:
2
2012新春纪念徽章
日期:2012-01-04 11:51:22咸鸭蛋
日期:2012-02-13 14:32:37
33#
发表于 2012-11-11 10:56 | 只看该作者
我不知道这样的帖子难点在哪里 分别统计新老用户 得到两个子查询 ,然后全外联不就行了么?

如果要说大数据量下的处理,同样也是这样的方法 时间作为公共维度,分别与新用户事实表、老用户事实表关联 这个时候得到的结果集已经很小了 在做全外联 就OK了 。

使用道具 举报

回复
论坛徽章:
0
34#
发表于 2012-11-12 13:19 | 只看该作者
 两个人的感情,两个人的生活,两个人的世界,两个人的家庭,好女人是男人的学校,好男人是女人的导师,一教一学之间,如影随行,感召彼此,携手终身。问天问地问宿命,人这辈子,总会苦一阵子,但不会苦一辈子。有人选择年轻时尽情地享乐,他的老年必然被痛苦所代替;有人选择年轻时多吃些苦头,他的老年一定充满着幸福。鱼和熊掌不可兼得,没有人能一条大道走通头。人,晚吃苦不如早吃苦,早来的苦是血汗如露在鲜花上的美丽,晚来的苦是风雨吹打着茅屋的凄凉。所以,心态安好,则幸福常存,树欲静而风不止,能真正救赎自己的,不是流淌的时间,也不是他人的帮助,而是自我良好的心态。时间的变换,去了旧伤或许又来了新疤;别人帮得了你一时,帮不了你一世。只有真正看开了,想通了,心病也就根除了。兵来将挡,水来土掩,把心放平,把心放宽,幸福才会常在。
 http://www.wcnk120.com/

http://www.375nk.com/


使用道具 举报

回复
招聘 : Java研发
论坛徽章:
114
SQL数据库编程大师
日期:2013-12-06 13:59:43萤石
日期:2013-12-06 15:50:21ITPUB元老
日期:2007-09-25 17:05:532011数据库大会纪念章
日期:2015-04-23 10:33:192010数据库技术大会纪念徽章
日期:2015-04-23 10:33:19喜羊羊
日期:2015-03-24 13:02:282015年新春福章
日期:2015-03-06 11:57:31喜羊羊
日期:2015-03-04 14:49:39马上有房
日期:2015-01-22 17:30:45马上加薪
日期:2014-12-25 08:48:51
35#
发表于 2012-11-12 15:54 | 只看该作者
真搞不懂有啥好讨论的,FULL OUTER JOIN   或者union all + group by ,前者效率应该高

使用道具 举报

回复
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
36#
发表于 2012-11-17 16:41 | 只看该作者
piliskys 发表于 2012-11-12 15:54
真搞不懂有啥好讨论的,FULL OUTER JOIN   或者union all + group by ,前者效率应该高

支持,个人觉得union all更高效一点

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24ITPUB社区OCM联盟徽章
日期:2014-06-09 10:24:39
37#
发表于 2012-11-18 22:58 | 只看该作者
LuiseDalian 发表于 2012-11-7 10:25
oracle 11g下实测

简洁。速度。

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-07-22 09:34:38
38#
发表于 2012-11-19 16:03 | 只看该作者
hsu_wp 发表于 2012-11-8 10:58
就3楼兄弟的表结构,提供mysql 版本笨方法2个:
法1:
SELECT tmp.newdate,SUM(IF(tmp.flag=1,tmp.newi ...


也想不出更好的方法了,但第二种效率稍低点。
第一种只需要A表、B表都做一次全表扫描
第二种A表全表扫描*B表索引查询+B表全表扫描*A表索引查询

使用道具 举报

回复
论坛徽章:
1
紫蛋头
日期:2013-01-10 11:05:26
39#
发表于 2012-12-3 14:55 | 只看该作者
是你拯救了我一颗拔凉拔凉的心!

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2013-12-18 09:29:13
40#
发表于 2012-12-14 14:38 | 只看该作者
大家都在说full join,
有些低版本不支持full join

使用道具 举报

回复

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

本版积分规则 发表回复

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