1. 复杂的计算:NSS Tutorial - SQLZOO

由于对nss数据没有详细说明,这部分题目的含义理解上经常出现问题,比如有的值本身就是百分比的形式。

T8: Show the institution, the total sample size and the number of computing students for institutions in Manchester for 'Q01'.

展示Q01且institution包含‘Manchester’的institution, 总的sample,以及subject=计算机的总人数;本来想使用子查询,奈何一直报错,看了书中可以在FROM中加入两个表,那么将另一个子查询作为表p2,两张表通过institution进行匹配,也可以做出来。【关注一下:GROUP BY ,子查询只能一列?,sql的运行顺序】,看答案有人用case语句。

-- case语句
SELECT institution,SUM(sample),
SUM(CASE WHEN subject = '(8) Computer Science' THEN sampleELSE 0END) FROM nss
WHERE question='Q01'AND (institution LIKE '%Manchester%')
GROUP BY institution
-- 使用子查询
SELECT DISTINCT(p1.institution), SUM(p1.sample), p2.comp
FROM nss AS p1,(SELECT institution,SUM(sample) AS comp FROM nssWHERE question='Q01'AND (institution LIKE '%Manchester%')AND subject = '(8) Computer Science'GROUP BY institution) AS p2WHERE p1.question='Q01'AND (p1.institution LIKE '%Manchester%')AND p1.institution = p2.institutionGROUP BY p1.institution, p2.comp

2. 自连接

T5: 執行自我合拼來,留意b.stop代表由Craiglockhart出發不用轉車可前住的地方。 修改它來顯示由Craiglockhart(stop=53)到 London Road(stop=149)的服務資料。

条件语句要重复用到某些内容,而这两次内容的含义是不同的。

-- T5:用站台标号
SELECT a.company, a.num, a.stop, b.stop
FROM route a JOIN route b ON(a.company=b.company AND a.num=b.num)
WHERE a.stop=53 AND b.stop = 149
-- T6: 用站台名
SELECT a.company, a.num, stopa.name, stopb.name
FROM route a JOIN route b ON(a.company=b.company AND a.num=b.num)JOIN stops stopa ON (a.stop=stopa.id)JOIN stops stopb ON (b.stop=stopb.id)
WHERE stopa.name='Craiglockhart' AND stopb.name = 'London Road'-- T7: 站台115-137之间的公司和路线
SELECT DISTINCT(a.company), a.num FROM route a
JOIN route b ON (a.company = b.company AND a.num = b.num)
WHERE (a.stop = 115 AND b.stop = 137)
OR (a.stop = 137 AND b.stop = 115)-- T8:車站stops 'Craiglockhart' 到 'Tollcross' 的公司名和路線號碼。
SELECT DISTINCT(a.company), a.num FROM route a
JOIN route b ON (a.company = b.company AND a.num = b.num)
JOIN stops stopa ON (a.stop = stopa.id)
JOIN stops stopb ON (b.stop = stopb.id)
WHERE (stopa.name = 'Craiglockhart' AND stopb.name =  'Tollcross' )
OR (stopa.name =  'Tollcross'  AND stopb.name = 'Craiglockhart')

T9: 不重覆列出可以由 'Craiglockhart' 乘一程車到達的站stops,包括'Craiglockhart'本身。 列出站名,公司名和路線號碼。

以为是写出坐一站站名和公司名,结果是找出不用转车的?

SELECT DISTINCT(stopb.name),b.company,b.num FROM route a
JOIN route b ON (a.company = b.company AND a.num = b.num)
JOIN stops stopa ON (a.stop = stopa.id)
JOIN stops stopb ON (b.stop = stopb.id)
WHERE stopa.name = 'Craiglockhart'
-- AND b.pos IN(a.pos +1,a.pos, a.pos-1)

T10: Find the routes involving two buses that can go from Craiglockhart to Sighthill.
Show the bus no. and company for the first bus, the name of the stop for the transfer,
and the bus no. and company for the second bus.

这题的思路:

找到起点为Craiglockhart的bus和其可到达的站stop1——bus1

找到终点为Sighthill的bus和其来自的站start2——bus2

bus1和bus2作为两张表,找到bus1的终点stop1=bus2的起点start2的换乘站

刚好用上本文第一部分的T8的子查询的用法。(*^▽^*)

SELECT DISTINCT bus1.num, bus1.company, name, bus2.num, bus2.company FROM (SELECT r12.num, r12.company, r12.stop AS stop1 FROM route r11
JOIN route r12 ON (r11.company=r12.company AND r11.num=r12.num)
WHERE r11.stop = (SELECT id FROM stops WHERE name = 'Craiglockhart')) AS bus1JOIN (SELECT r21.num, r21.company, r21.stop AS start2 FROM route r21
JOIN route r22 ON (r21.company=r22.company AND r21.num=r22.num)
WHERE r22.stop = (SELECT id FROM stops WHERE name = 'Sighthill')) AS bus2ON (bus1.stop1 = bus2.start2)
JOIN stops ON (stops.id = bus1.stop1)

sqlzoo-day7相关推荐

  1. python学习之路-day7

    本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 静态方法                             ...

  2. SpaceEmacs Rock Day7 学习笔记

    <?xml version="1.0" encoding="utf-8"?> SpaceEmacs Rock Day7 学习笔记 SpaceEmac ...

  3. Loj #6077. 「2017 山东一轮集训 Day7」逆序对

    Loj #6077. 「2017 山东一轮集训 Day7」逆序对 Solution 令fi,jf_{i,j}fi,j​表示前iii个数产生jjj个逆序对的方案数,每次考虑把i+1i+1i+1加入,有i ...

  4. 容斥问卷调查反馈——Co-prime,Character Encoding,Tree and Constraints,「2017 山东一轮集训 Day7」逆序对

    文章目录 Co-prime source solution code Character Encoding source solution code Tree and Constraints sour ...

  5. [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心+贪心)

    [LOJ 6042]「雅礼集训 2017 Day7」跳蚤王国的宰相 description solution 一个到所有节点距离和最小的节点 ⇔\Leftrightarrow⇔ 树的重心(满足最重的儿 ...

  6. python 循环指定次数_亮仔的Python之路Day7——Python循环语句

    day7:2019-09-01 今日学习目的: 了解循环语句,使用代码解放劳动力 实践是检验真理的唯一标准 我们使用代码的最终目的是解放劳动力 当你还在复制粘贴累的半死的时候 别人随手几行代码就搞定 ...

  7. day7——集合,深浅copy

    数据类型的补充 # s1 = '中国' # b1 = s1.encode('utf-8') # # print(b1)-------------->b'\xe4\xb8\xad\xe5\x9b\ ...

  8. LeetCode算法入门- String to Integer (atoi)-day7

    LeetCode算法入门- String to Integer (atoi)-day7 String to Integer (atoi): Implement atoi which converts ...

  9. Activity的launchMode启动模式 day7

    2019独角兽企业重金招聘Python工程师标准>>> Activity的launchMode day7 在功能清单AndroidManifest.xml 里 设置 启动模式 如: ...

  10. Day7:html和css

    Day7:html和css 如果有浮动,会导致脱标,定位也能脱标,我们没有清除浮动,因为里面有子绝父相. 清除浮动的方法 额外标签法,在最后一个浮动元素后面添加一个空的标签代码: <div st ...

最新文章

  1. 整理了一些t-sql技巧
  2. FilterDispatcher is deprecated! Please use
  3. 阿里2020 净利润约: 2000亿元 腾讯2020 净利润约: 1000亿元 百度2020 净利润约: 300亿元 美团2020 净利润约: 150亿元 --互联网一响,黄金万两
  4. nodejs+express+mongodb简单的例子
  5. QT绘制带有数据源的图表
  6. 病毒c语言代码大全,谁有C语言编写的病毒源代码?
  7. my-innodb-heavy-4G.cnf 配置文件参数介绍
  8. libjpeg(1)
  9. android if else,Android对很多if和else条件
  10. elk logstach收集交换机日志
  11. 自动驾驶扎堆“重感知”路线:毫末智行如何从独行到领航?
  12. Java爬虫彼岸桌面壁纸(使用httpClient+Jsoup)
  13. 深入理解Android之Java Security第一部分
  14. 超酷flv网页播放器 CKplayer V5.7
  15. python12306抢票_Python 版 12306 抢票神器
  16. 手机淘宝——flexible.js 移动端自适应方案
  17. 我的java开发总结
  18. Elasticsearch如何创建索引,添加,删除,更新文档
  19. 百度财报解析-百度云要变成老大哥
  20. iOS 二进制文件分析之常用命令

热门文章

  1. 10060 mysql_MySQL错误:Can't connect to MySQL server (10060) 解决方案
  2. android手电筒功能吗,android通过led实现手电筒功能
  3. matlab怎么写卷积过程,离散卷积过程举例图示详解
  4. DNS域欺骗攻击详细教程之Windows篇
  5. 3种团队分组适应项目_对于新组建的团队,项目经理可以采用这5个破冰练习
  6. 1.网络通讯-9种常用网络命令
  7. php的mvc设计模式,什么是MVC设计模式?,
  8. ArcGIS-云南滇池+抚仙湖流域地形图制作及使用图层下载(shp+dem)
  9. 关于windows清理C盘问题
  10. 深度自动编码器(Deep Auto-encoder)