ylb:SQL 表的高级查询-多表连接和子查询
ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 |
SQL Server 表的高级查询-多表连接和子查询。
1,ylb:表的高级查询-多表连接和子查询 返回顶部 |
- --================================
- -- ylb:表的高级查询- 多表连接和子查询
- -- pubs库的练习
- -- 17:18 2011/12/13
- --================================
- use pubs
- go
- select * from authors
- select * from titles
- --select * from titleauthor
- select * from publishers
- --1,查看出版社名称,书名称
- go
- --2,查看出版社名称,出版社出书预付款总额
- select pub_name,SUM(advance) '预付款总额' from publishers p
- inner join titles t on p.pub_id=t.pub_id
- group by pub_name
- go
- --3,查看出版社名称,出版社出书预付款最大值,单价最小值
- select pub_name,max(advance) '付款最大值',MIN(price) '单价最小值' from publishers p
- inner join titles t on p.pub_id=t.pub_id
- group by pub_name
- go
- --4,查看出版社编号,出版社名称,书名称,书单价,作者编号
- select * from publishers p
- inner join titles t on p.pub_id=t.pub_id
- inner join titleauthor ta on t.title_id=ta.title_id
- go
- --5,查看出版社编号,书总价,书最高价格,作者总数
- ---5分析
- --这本书(TC7777)有两个作者(472-27-2349,672-71-3249)
- --这个作者(486-29-1786) 出了两本书(PC9999,PS7777)
- --5_1,错的
- select p.pub_id,SUM(price),MAX(price),count(title_id) from publishers p
- inner join titles t on p.pub_id=t.pub_id
- group by p.pub_id
- go
- --5_2,正确的
- select p.pub_id,SUM(price),MAX(price),count(distinct au_id) from publishers p
- inner join titles t on p.pub_id=t.pub_id
- inner join titleauthor ta on t.title_id=ta.title_id
- group by p.pub_id
- go
- --6,查看出版社编号,书总价,书最高价格,要求作者总数大于9的信息
- select pub_id,SUM(price),MAX(price) from titles t
- inner join titleauthor ta on t.title_id=ta.title_id
- group by pub_id
- having count(distinct au_id)>9
- go
- --7,查找书名称,书编号,作者编号
- go
- --8,查找书名称,作者数量
- select title,COUNT(au_id) '作者数量' from titles t
- inner join titleauthor ta on t.title_id=ta.title_id
- group by title
- go
- --9,查找商业书的所有书名称,作者数量,
- select title,COUNT(au_id) '作者数量' from titles t
- inner join titleauthor ta on t.title_id=ta.title_id
- where type='business'
- group by title
- go
- --10,查找商业书的所有作者姓名,作者编号,作者城市
- select * from titles t
- inner join titleauthor ta on t.title_id=ta.title_id
- inner join authors a on ta.au_id=a.au_id
- where type='business'
- go
- --11,在CA州的作者出的书,书名,书单价总和,
- --书最高预付款,书的最低价格。
- select title,SUM(price),MAX(advance),MIN(price) from titles t
- inner join titleauthor ta on t.title_id=ta.title_id
- inner join authors a on ta.au_id=a.au_id
- where state='CA'
- group by title
- go
- --12,和商店的同一州作者出的书,书名,书单价总和,
- --书最高预付款,书的最低价格。
- --12_1,
- select au_id from authors a
- where state in(select state from stores where state=a.state)
- go
- --12_2,
- select distinct title_id from titleauthor ta
- where au_id in(select au_id from authors a
- where state in(select state from stores where state=a.state))
- go
- --12_3,
- select * from titles t
- where title_id in(select distinct title_id from titleauthor ta
- where au_id in(select au_id from authors a
- where state in(select state from stores where state=a.state)))
- go
- --12_4,结论
- select title,SUM(price),MAX(advance),MIN(price) from titles t
- where title_id in(select distinct title_id from titleauthor ta
- where au_id in(select au_id from authors a
- where state in(select state from stores where state=a.state)))
- group by title
- go
- --13,和商店的同一州作者出的书,书名,书单价总和,
- --书最高预付款,书的最低价格,要
- --求书必须大于所有商业书的价格。
- --13_1,
- select * from titles
- where price>(select max(price) from titles where type='business')
- go
- --13_2,总结
- select title,SUM(price),MAX(advance),MIN(price) from titles t
- where title_id in(select distinct title_id from titleauthor ta
- where au_id in(select au_id from authors a
- where state in(select state from stores where state=a.state)))
- and price>(select max(price) from titles where type='business')
- group by title
- go
- --SQL脚本总结
- --1,如果有条件“先做条件”
- --2,多列先链表,再做条件
- --3, 先做条件后排序
- --3,分组常和聚合函数在一起。
- --4,
- --5,子查询,如果有已知条件用嵌套子查询,否则就是相关子查询。
- --前(where 列条件)group by 后(having 组条件)
- select * from titles
- where type='business'
- order by title_id desc
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
ylb:SQL 表的高级查询-多表连接和子查询的更多相关文章
- MS sql server 基础知识回顾(二)-表连接和子查询
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...
- MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- MySQL数据库学习笔记----MySQL多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- mysql(4)—— 表连接查询与where后使用子查询的性能分析。
子查询就是在一条查询语句中还有其它的查询语句,主查询得到的结果依赖于子查询的结果. 子查询的子语句可以在一条sql语句的FROM,JOIN,和WHERE后面,本文主要针对在WHERE后面使用子查询与表 ...
- mysql学习笔记-- 多表查询之外键、表连接、子查询、索引
本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...
- 《SQL Server 2012 T-SQL基础》读书笔记 - 4.子查询
Chapter 4 Subqueries 子查询分为:独立子查询(Self-Contained Subqueries)和相关子查询(Correlated Subqueries),独立子查询可以单独拿出 ...
- Oracle_SQL(5) 连接和子查询
一.连接join一般分类: inner join: 内连接,又叫等值连接,只返回两个表中连接字段相等的行. left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录. right ...
- mysql经常使用查询:group by,左连接,子查询,having where
前几天去了两个比較牛的互联网公司面试.在sql这块都遇到问题了,哎.可惜呀,先把简单的梳理一下 成绩表 score 1.group by 使用 按某一个维度进行分组 比如: 求每一个同学的总分 SEL ...
随机推荐
- 数据库——初始mysql语句(2)
sql语句 #1. 操作文件夹(库) 增:create database db1 charset utf8; 查:show create database db1; show databases; 改 ...
- [oldboy-django][5python基础][内置函数]zip
python3中,把两个或两个以上的迭代器封装成生成器,在循环遍历生成器中,不断产生元组. 如果提供的迭代器长度不对等,生成器的长度为最短迭代器的长度. # coding= utf-8 # zip 多 ...
- TOJ 4689: Sawtooth
4689: Sawtooth Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: 26 ...
- 计算两个日期之间的天数差C++/java
1--Java 分析:调用java中Calendar类 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInstance ...
- CentOS7重新生成 /boot/grub2/grub.cfg
CentOS7重新生成 /boot/grub2/grub.cfg CentOS7 is using grub2 and the generated /boot/grub2/grub.cfg rathe ...
- codevs 1690 开关灯 线段树区间更新 区间查询Lazy
题目描述 Description YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点之前,这些路灯全是关着的,六点之后,会有M(2<=m<=100000)个人 ...
- Chrome 浏览器访问 Google 学术出现问题 “but your computer or network may be sending automated queries. ”
问题: Chrome 浏览器访问 Google 学术出现如下的问题 : ... but your computer or network may be sending automated querie ...
- 后缀数组基本问题QAQ
以下题目均来自罗穗骞的论文... No.1最长公共前缀 最长公共前缀: 题目: 给定一个字符串,询问某两个后缀的最长公共前缀. 分析: 某两个后缀的最长公共前缀就是区间height最小值,转化为RMQ ...
- 用来武装Firebug的十四款Firefox插件
原文发布时间为:2010-04-24 -- 来源于本人的百度文章 [由搬家工具导入] 如果你是一名Web设计师,Firebug想必不会陌生,作为一款Firefox插件,它可能是网站前端开发最有用的工具 ...
- linux内核之情景分析mmap操作
进程可以通过mmap把一个已打开文件映射到用户空间. mmap(void*start,size_t length,int prot,int flags,int fd,off_t offset) sta ...