查看: 4641| 回复: 17
跳转到指定楼层
上一主题 下一主题
收起左侧

[DB|大数据|云计算] [Stanford]Introduction to databases (week3) 讨论帖!

全局:
公开课
学校名称: stanford
Unit号: 3
开课时间: 2014-01-07
课程全名: Introduction to databases
平台: 其他

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x


因为学的同学比较多,这周课程作业也非常多,把讨论帖和加分贴分开方便大家发帖问问题


讨论帖(该贴仅为week3讨论帖,加分贴请点这里)

课程汇总 && 介绍:http://www.1point3acres.com/bbs/thread-79690-1-1.html

本周任务:




上一篇:【长期加分贴】介绍和点评你上过的公开课
下一篇:Specializations On Coursera
🔗
season1016 2014-1-24 19:59:58 | 只看该作者
全局:
其实SQL的疑问有好多。我再来发一条吧。SQLite系统里是不是对all, intersect , union这些语句都不适用呀?每次用到都报错
回复

使用道具 举报

🔗
 楼主| sanguine 2014-1-24 23:24:07 | 只看该作者
全局:
season1016 发表于 2014-1-24 19:59
其实SQL的疑问有好多。我再来发一条吧。SQLite系统里是不是对all, intersect , union这些语句都不适用呀?每 ...

对的,SQLite不支持all,union这些
回复

使用道具 举报

🔗
 楼主| sanguine 2014-1-24 23:28:40 | 只看该作者
全局:
大家SQL Movie-Rating Query Exercises Challenge Level 的Q6:
For each director, return the director's name together with the title(s) of the movie(s) they directed that received the highest rating among all of their movies, and the value of that rating. Ignore movies whose director is NULL.

都是什么思路呢==感觉被绕晕了……虽然作出来了但感觉效率很低,
我是先把两张表连接起来作为一张大表作为newDirector, 然后有newDirector1,newDirector2,where语句就这样写的:
where stars in
  (select max(stars)
  from Movie join Rating using(mID)
  where newDirector.director = director)

感觉这个题有非常多的思路,大家说说你们都是什么思路?
回复

使用道具 举报

🔗
season1016 2014-1-25 07:34:39 | 只看该作者
全局:
sanguine 发表于 2014-1-24 23:28
大家SQL Movie-Rating Query Exercises Challenge Level 的Q6:
For each director, return the director' ...

感觉我的更复杂呢
select director, title, mstar
from (select *
        from Movie, (select mID, max(stars) as mstar from Rating R group by R.mID) NewR
        where Movie.mID=NewR.mID)
group by director
having director is not null
回复

使用道具 举报

🔗
 楼主| sanguine 2014-1-25 10:37:25 | 只看该作者
全局:
season1016 发表于 2014-1-25 07:34
感觉我的更复杂呢
select director, title, mstar
from (select *

没有,感觉你的会更简单一点,我当时是一直没想到,如何查找到max(stars)后,再查到这个stars对应的movie title~~~而且因为以前学过SQL==一直没习惯在from里面用subquery,只会在where里面用,

我的因为where newDirector.director = director,每查询遍历一次newDirector这张表的一行,就要再查完整张director
不过都是自己YY的时间复杂度==好像从来就没人讨论过SQL的效率阿什么的==?
回复

使用道具 举报

🔗
season1016 2014-1-25 11:00:46 | 只看该作者
全局:
本帖最后由 season1016 于 2014-1-25 11:04 编辑
sanguine 发表于 2014-1-25 10:37
没有,感觉你的会更简单一点,我当时是一直没想到,如何查找到max(stars)后,再查到这个stars对应的movie ...

呵呵,每个人有每个人的习惯呀,我还不习惯在where里面放subquery呢。。。不过还好老师给的题多,后面慢慢摸索出来的。我第一个core set的题库里面的代码都很复杂。。后面就慢慢会用in not in ,代码就简单好多
老师也有说过复杂度的问题。但是具体和计算机里面的时间复杂度 存储的复杂度(不知道专业术语是啥)是不是一样的我也不知道。但是原则就是能命名的table就通过名字来引用,避免多算一遍。至于多个表join会不会增加时间复杂度不知道呢。不过join的表越多,结果table越大倒是真的。
回复

使用道具 举报

🔗
bearkino 2014-1-28 21:26:44 | 只看该作者
全局:
那啥  刚开始做题  看到大家说union之类的关键词不能用。。就手贱去测试了下  但是结果通过了啊  0.0

在SQLite里编译也能得到结果。。

我用的是SQLiteStudio  不知道什么情况。。
回复

使用道具 举报

🔗
bearkino 2014-1-28 23:01:30 | 只看该作者
全局:
SQL Movie Rating Modification E 里面的第二题  大家是用的  insert into TABLE (X,X,X) select y,y,y UNION ALL select y,y,y  ..... 的方法么。。

整个人都不好了。。

求教育。
回复

使用道具 举报

🔗
 楼主| sanguine 2014-1-28 23:06:32 | 只看该作者
全局:
bearkino 发表于 2014-1-28 23:01
SQL Movie Rating Modification E 里面的第二题  大家是用的  insert into TABLE (X,X,X) select y,y,y UNI ...

Insert 5-star ratings by James Cameron for all movies in the database. Leave the review date as NULL. 这个题?

不需要union吧,我直接用的
insert into Rating  
select rID,mID,5,null from Reviewer, Movie  
where name="James Cameron";
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表