楼主: newkid

[精华] SQL解惑(第2版) 的一些样题

[复制链接]
论坛徽章:
0
71#
发表于 2010-4-22 15:16 | 只看该作者
mark

使用道具 举报

回复
论坛徽章:
821
授权会员
日期:2007-08-10 01:06:30山治
日期:2019-11-15 22:34:592015年新春福章
日期:2015-03-06 11:57:31暖羊羊
日期:2015-03-04 14:50:37马上有钱
日期:2014-12-21 16:14:33马上加薪
日期:2014-11-23 19:24:42 2014年世界杯参赛球队: 德国
日期:2014-07-09 15:28:06ITPUB元老
日期:2008-08-24 00:06:57会员2007贡献徽章
日期:2007-09-26 18:42:10托尼托尼·乔巴
日期:2020-03-23 10:49:16
72#
发表于 2010-4-23 11:54 | 只看该作者
老大可以考虑出本书啦.

使用道具 举报

回复
论坛徽章:
1
ITPUB官方微博粉丝徽章
日期:2012-03-26 10:56:33
73#
发表于 2010-6-11 08:36 | 只看该作者
这本书写的挺不错的

使用道具 举报

回复
论坛徽章:
3
ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152012新春纪念徽章
日期:2012-01-04 11:50:44三菱
日期:2013-11-07 22:09:16
74#
发表于 2010-6-21 15:00 | 只看该作者
thanks!nice job.

使用道具 举报

回复
论坛徽章:
6
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010广州亚运会纪念徽章:曲棍球
日期:2010-12-06 10:59:282011新春纪念徽章
日期:2011-02-18 11:43:34双黄蛋
日期:2011-07-15 10:33:56灰彻蛋
日期:2011-08-15 16:23:02ITPUB十周年纪念徽章
日期:2011-11-01 16:25:51
75#
发表于 2010-7-16 10:21 | 只看该作者

回复 #1 newkid 的帖子

-----------------------------------------------------------
DELETE FROM Consumers
WHERE con_id IN (
       SELECT con_id
        FROM (SELECT c.*
                    ,COUNT(fam) OVER(PARTITION BY address) cnt
                FROM Consumers c
              )
       WHERE fam IS NULL AND cnt>0
       );
     这样把C、D也删除了,最后一句应该是   :   WHERE fam IS NULL AND cnt>=2

使用道具 举报

回复
论坛徽章:
16
数据库板块每日发贴之星
日期:2008-07-20 01:02:07IT宝贝
日期:2011-12-07 11:07:07ITPUB十周年纪念徽章
日期:2011-11-01 16:25:22ITPUB十周年纪念徽章
日期:2011-09-27 16:33:28灰彻蛋
日期:2011-06-18 13:23:482010广州亚运会纪念徽章:足球
日期:2011-04-28 06:55:50ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522010年世界杯参赛球队:墨西哥
日期:2010-05-11 23:32:562010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:马
日期:2009-10-23 10:29:42
76#
发表于 2010-7-16 16:26 | 只看该作者
很好很强大,牛贴留名

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
77#
 楼主| 发表于 2010-7-16 21:47 | 只看该作者
原帖由 cj402444206 于 2010-7-16 10:21 发表
-----------------------------------------------------------
DELETE FROM Consumers
WHERE con_id IN (
       SELECT con_id
        FROM (SELECT c.*
                    ,COUNT(fam) OVER(PARTITION BY address) cnt
                FROM Consumers c
              )
       WHERE fam IS NULL AND cnt>0
       );
     这样把C、D也删除了,最后一句应该是   :   WHERE fam IS NULL AND cnt>=2


不会,你试一下就知道。
COUNT(fam)不是COUNT(*), 当fam为NULL时不会计算在内。

使用道具 举报

回复
论坛徽章:
12
奥运会纪念徽章:乒乓球
日期:2012-08-13 17:45:07itpub13周年纪念徽章
日期:2014-10-08 15:15:25祖国65周年纪念徽章
日期:2014-09-30 16:01:33本田
日期:2013-12-19 17:29:18优秀写手
日期:2013-12-18 09:29:16ITPUB社区12周年站庆徽章
日期:2013-10-17 13:56:59迷宫蛋
日期:2013-06-21 10:26:302013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-11-21 10:45:03灰彻蛋
日期:2012-11-12 17:03:27
78#
发表于 2012-7-6 11:43 | 只看该作者
newkid 发表于 2010-3-12 03:21
谜题27 找出相等集合

楼主您好十分感谢您分享的题目。我最近看到您发的题目觉得很有意思,自己也学习着做了做。这题不懂我做的对不,我前面是和您一样的,后面的关联和你的有点偏差,不知道逻辑行不行的通
select distinct
case when  a.sno > b.sno then a.sno else b.sno end  ,
  case when  a.sno < b.sno then a.sno else b.sno end    from supparts  a ,supparts b
where a.sno <> b.sno
and a.pno=b.pno
group by a.sno,b.sno
having count(*) >=all(select count(*) from supparts where sno in (a.sno,b.sno) group  by sno)

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
79#
 楼主| 发表于 2012-7-6 22:25 | 只看该作者
lzw4088 发表于 2012-7-6 11:43
楼主您好十分感谢您分享的题目。我最近看到您发的题目觉得很有意思,自己也学习着做了做。这题不懂我做的 ...

你的写法是对的,前面的SELECT有点啰嗦可以改一下:

select a.sno,b.sno
from supparts  a ,supparts b
where a.sno < b.sno
and a.pno=b.pno
group by a.sno,b.sno
having count(*) = all(select count(*) from supparts where sno in (a.sno,b.sno) group  by sno)

你的all后面的子查询对应所有的a.sno,b.sno组合都要执行,我是事先把所有供应商的COUNT都算好。

使用道具 举报

回复
论坛徽章:
12
奥运会纪念徽章:乒乓球
日期:2012-08-13 17:45:07itpub13周年纪念徽章
日期:2014-10-08 15:15:25祖国65周年纪念徽章
日期:2014-09-30 16:01:33本田
日期:2013-12-19 17:29:18优秀写手
日期:2013-12-18 09:29:16ITPUB社区12周年站庆徽章
日期:2013-10-17 13:56:59迷宫蛋
日期:2013-06-21 10:26:302013年新春福章
日期:2013-02-25 14:51:24迷宫蛋
日期:2012-11-21 10:45:03灰彻蛋
日期:2012-11-12 17:03:27
80#
发表于 2012-7-8 10:52 | 只看该作者
newkid 发表于 2012-7-6 22:25
你的写法是对的,前面的SELECT有点啰嗦可以改一下:

select a.sno,b.sno

谢谢楼主,在这里做题学到很多东西

使用道具 举报

回复

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

本版积分规则 发表回复

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