mysql常用查询:group by,左连接,子查询,having where
2014-04-27 17:33
537 查看
前几天去了两个比较牛的互联网公司面试,在sql这块都遇到问题了,哎,可惜呀,先把简单的梳理一下
成绩表 score
例如:
求每个同学的总分
SELECT student,SUM(score) FROM score GROUP BY student
求每个同学的平均分
SELECT student,***G(score) FROM score GROUP BY student
也可以按照 班级,课程 来求
where针对表中的列发挥作用,查询数据
having对查询结果中的列发挥作用,筛选数据
例如:
查出挂了两门及以上的学生
SELECT student,SUM(score<60)as gk FROM score GROUP BY student H***ING gk>1
(把内层查询结果当作外层查询的比较条件)
求比每门课程平均分低的学生
SELECT student ,course, score
FROM score ,(SELECT course AS a_course,***G( score)AS a_score FROM score GROUP BY course) AS avg_score
WHERE course = a_course AND score<a_score
先写到这吧
可以参考
http://www.cnblogs.com/rollenholt/archive/2012/05/15/2502551.html
成绩表 score
1、group by 使用
按某一个维度进行分组例如:
求每个同学的总分
SELECT student,SUM(score) FROM score GROUP BY student
求每个同学的平均分
SELECT student,***G(score) FROM score GROUP BY student
也可以按照 班级,课程 来求
2、having 与 where的区别
having与where类似,可以筛选数据,where后的表达式怎么写,having后就怎么写where针对表中的列发挥作用,查询数据
having对查询结果中的列发挥作用,筛选数据
例如:
查出挂了两门及以上的学生
SELECT student,SUM(score<60)as gk FROM score GROUP BY student H***ING gk>1
3、子查询
(1)where子查询(把内层查询结果当作外层查询的比较条件)
求比每门课程平均分低的学生
SELECT student ,course, score
FROM score ,(SELECT course AS a_course,***G( score)AS a_score FROM score GROUP BY course) AS avg_score
WHERE course = a_course AND score<a_score
先写到这吧
可以参考
http://www.cnblogs.com/rollenholt/archive/2012/05/15/2502551.html
相关文章推荐
- MySQL源码之两阶段提交
- MySQL源码之Thread cache
- mysql的索引类型及优化
- MySQL源码之mysqld启动
- Mysql数据库索引
- mysql5.5安装
- mysql binlog设置
- mysql 支持中文,防止程序乱码的方法
- Mysql:is not allowed to connect to this MySQL server
- 设置Ubuntu上的MySQL可以远程访问
- MySQL索引基本应用[转]
- mysql ERROR 1045 (28000): Access denied for user解决方法
- 使用MySQL全文索引
- MySQL入门(转载加自己见解)
- 安装mysql server5.5 到start service未响应
- mysql中int、bigint、smallint和tinyint的区别与长度
- 支持多主机的单一实例MYSQL类
- mysql 复制表结构和表数据
- MySQL分区表基础
- windows 下mysql 绿色版 安装