美文网首页
SQL面试核心

SQL面试核心

作者: Java全栈攻城狮 | 来源:发表于2020-03-11 15:03 被阅读0次

group by里出现某个表的字段,select里面的列要么是该group by里出现的列,要么是带有聚合函数的列或者是别的表的列。

查询所有同学的学号、选课数、总成绩

select student_id,count(course_id),sum(score) from score group by student_id;

查询所有同学的学号、姓名、选课数、总成绩

select student_id,count(course_id),sum(score) from score s,student stu where s.student_id=stu.student_id group by s.student_id;

having

查询平均成绩大于60分的同学的学号和平均成绩

select student_id,avg(score) from score group by student_id having avg(score) > 60

查询没有学全所有课的同学的学号、姓名

select stu.student_id,stu.student_name from score s,student stu group by stu.student_id having count(s.course_id) < (select count(1) from course);

行转列

INSERT INTO student_scores(user_name,subject,score) VALUES ('张三', '语文', 80);
INSERT INTO student_scores(user_name,subject,score) VALUES ('张三', '数学', 90);
INSERT INTO student_scores(user_name,subject,score) VALUES ('张三', '英语', 70);
INSERT INTO student_scores(user_name,subject,score) VALUES ('张三', '生物', 85);
INSERT INTO student_scores(user_name,subject,score) VALUES ('李四', '语文', 80);
INSERT INTO student_scores(user_name,subject,score) VALUES ('李四', '数学', 92);
INSERT INTO student_scores(user_name,subject,score) VALUES ('李四', '英语', 76);
INSERT INTO student_scores(user_name,subject,score) VALUES ('李四', '生物', 88);
INSERT INTO student_scores(user_name,subject,score) VALUES ('码农', '语文', 60);
INSERT INTO student_scores(user_name,subject,score) VALUES ('码农', '数学', 82);
INSERT INTO student_scores(user_name,subject,score) VALUES ('码农', '英语', 96);
INSERT INTO student_scores(user_name,subject,score) VALUES ('码农', '生物', 78);

CREATE TABLE student_scores (
id int(11) NOT NULL AUTO_INCREMENT,
user_name varchar(255) DEFAULT NULL,
subject varchar(255) DEFAULT NULL,
score decimal(10,2) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;

SELECT * from student_scores;

SELECT user_name,
MAX(IF (subject='语文',score,NULL)) '语文',
MAX(IF (subject='数学',score,NULL)) '数学',
MAX(IF (subject='英语',score,NULL))'英语',
MAX(IF (subject='生物',score,NULL))'生物'
FROM student_scores
GROUP BY user_name;

相关文章

  • SQL面试核心

    group by里出现某个表的字段,select里面的列要么是该group by里出现的列,要么是带有聚合函数的列...

  • Mysql行转列

    遇到的一个Sql面试题: 建表: Sql: 结果:

  • 因为不太了解JVM,面试官让我先回去等通知...

    面试官:你对SQL了解多少? 小菜鸡:SQL很简单啊! 面试官:... 你先回去等通知吧。 对于一个极短的SQL,...

  • Spark Sql源码解读-catalyst(SqlParser

    上篇博客的结尾已经给大家介绍了Spark Sql的核心流程,而这个核心流程也就是通过Spark Sql中最核心的c...

  • 常见面试题之数据库查询

    最近在面试的时候常见SQL题目: 1、统计胜负结果的SQL语句 期望结果: 具体实现SQL: 具体SQL: SEL...

  • MyBatis学习:动态sql

    1.动态sql 动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通...

  • SQL面试72题

    ​ SQL面试72题 大家好,这一期呢,我们来看一下sql的面试题。 第1题,什么是sql? 结构化查询语言。用来...

  • sql

    SQL面试72题 大家好,这一期呢,我们来看一下sql的面试题。 第1题,什么是sql? 结构化查询语言。用来创建...

  • 5年Java高工经验,我是如何成功拿下滴滴D7Offer的?

    面试经验分享 1.笔试常见的问题 面试常见的问题上面给的面试题链接基本都有。我只提几点: 写SQL:写SQL很常考...

  • SQL面试

    1.数据库索引原理,如何发挥作用?针对插入操作,会对索引会起什么影响?索引的思想就是,根据表中数据建立一套索引数据...

网友评论

      本文标题:SQL面试核心

      本文链接:https://www.haomeiwen.com/subject/xkhbqhtx.html