转自:http://haohaoxuexi.iteye.com/blog/1820541
最近正在换工作,面试了几家公司,做了一些笔试题,现把其中几道还有点意思的题贴出来。在这边文章中我想先把这几道题贴出来,之后再进行解答。
1.如何用一条语句把一张表的数据插入到另一张数据库表中?
2.如何用一条语句把一张表的数据插入到另一张不存在的数据库表中?
3.有如下A、B两个表,如何将A表的数据查询出来,结果如B所示?
A表:
姓名 |
科目 |
分数 |
张三 |
语文 |
60 |
李四 |
数学 |
65 |
张三 |
英语 |
70 |
张三 |
数学 |
75 |
李四 |
语文 |
80 |
李四 |
英语 |
68 |
B表:
姓名 |
语文 |
数学 |
英语 |
总分 |
张三 |
|
|
|
|
李四 |
|
|
|
|
4.有如下几个类,我先运行TestA,再运行TestB,那么:
class A:
- public class A {
- public static int a = 6;
- }
class TestA:
- public class TestA {
- public static void main(String args[]) {
- A a = new A();
- a.a++;
- System.out.println(a.a);
- }
- }
class TestB:
- public class TestB {
- public static void main(String args[]) {
- A b = new A();
- System.out.println(b.a);
- }
- }
(1)运行TestA的时候输出的结果是什么?
(2)运行TestB的时候输出的结果是什么?
(3)运行TestA和TestB的结果为什么相同或不相同?
解答:
1.如何用一条语句把一张表的数据插入到另一张数据库表中?
- insert into tableA select * from tableB
2.如何用一条语句把一张表的数据插入到另一张不存在的数据库表中?
- select * into tableB from tableA;
- -------或者是下面这种写法
- create table tableB as select * from tableA;
3.有如下A、B两个表,如何将A表的数据查询出来,结果如B所示?
A表:
姓名 |
科目 |
分数 |
张三 |
语文 |
60 |
李四 |
数学 |
65 |
张三 |
英语 |
70 |
张三 |
数学 |
75 |
李四 |
语文 |
80 |
李四 |
英语 |
68 |
B表:
姓名 |
语文 |
数学 |
英语 |
总分 |
张三 |
|
|
|
|
李四 |
|
|
|
|
这里我们用一个t_student表来表示A表,其建表语句如下所示:
- create table t_student(name varchar2(4), course varchar2(4), score int);
那么这个时候要用一条SQL语句把A表的数据查询出B表的结果,我们可以如下定义我们的SQL语句:
- select a.name 姓名,sum(case when course='语文' then score end) 语文,sum(cas
- e when course='英语' then score end) 英语,sum(case when course='数学' then score
- end) 数学,b.total 总分 from t_student a, (select name, sum(score) total from t_
- student group by name) b where a.name=b.name group by a.name,b.total order by a.
- name desc;
这条语句的总体思路是:
- 先用分组的形式查询出每个人的总成绩
- 用case when的形式把课程列分为多列,这样满足的那一列的成绩就是当前人当前课程的成绩,其他的成绩在当前行为空
姓名 语文 数学 英语
---- ---------- ---------- ----------
张三 60
张三 75
张三 70
李四 68
李四 80
李四 65
- 把上述两个结果按照相同的姓名连接起来并按照姓名和总分分组,这样我们查询出来的结果就可以显示姓名和总分,那么我们没有按照成绩进行分组,那么当我们用分组语句的时候该如何查询出我们的成绩呢?这个时候sum就起作用了,根据之前分析的,每个人每门成绩只有一个有效值,其他的为空,所以我们对它进行汇总的结果还是其当前课程的成绩,这就可以满足我们在分组的情况下查询出对应的成绩。(在进行分组查询的时候,只能查询出对应的分组字段和统计字段)
- 最后一步进行排序是为了按照“张三”,“李四”那样的顺序排列
简化方式:
SELECT NAME,SUM(CASE WHEN course = '语文' THEN score END) 语文,
SUM(CASE WHEN course = '数学' THEN score END) 数学,
SUM(CASE WHEN course = '英语' THEN score END) 英语,
sum(a.score) FROM t_student a GROUP BY a.name;
上面查询出来的结果会如下所示:
姓名 语文 英语 数学 总分
------ ------ ------- ------- --------
张三 60 70 75 205
李四 80 68 65 213
4.有如下几个类,我先运行TestA,再运行TestB,那么:
class A:
- public class A {
- public static int a = 6;
- }
class TestA:
- public class TestA {
- public static void main(String args[]) {
- A a = new A();
- a.a++;
- System.out.println(a.a);
- }
- }
class TestB:
- public class TestB {
- public static void main(String args[]) {
- A b = new A();
- System.out.println(b.a);
- }
- }
(1)运行TestA的时候输出的结果是什么?
7
(2)运行TestB的时候输出的结果是什么?
6
(3)运行TestA和TestB的结果为什么相同或不相同?
虽然变量a是类A的静态变量,但是TestA和TestB是两个不同的应用程序,TestA中改变的变量a的值不会影响到TestB中的结果。
相关推荐
本文将对用友面试时出的几道面试题进行解释和总结,涵盖了Java集合、MVC模式、SQL Server和Oracle数据库、页面传值等多个方面的知识点。 1. Hashtable 和 HashMap 的区别 Hashtable 和 HashMap 都是Java中的集合类...
Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题:36道 Spark面试题:97道 Flink面试题:40道 数仓面试题:25道 综合面试题:43道 数据库(MySQL)...
本文将深入探讨内存的几个关键知识点,同时提供一些面试中可能遇到的相关问题。 首先,我们要了解内存的划分。在C++中,内存主要分为栈内存(Stack)、堆内存(Heap)、静态存储区(Static Storage)和常量存储区...
Python面试题及答案共70道Python面试题及答案共70道Python面试题及答案共70道Python面试题及答案共70道Python面试题及答案共70道Python面试题及答案共70道Python面试题及答案共70道Python面试题及答案共70道Python...
"MySQL 面试题知识点总结" MySQL 是一种关系型数据库管理系统,以下是 MySQL 面试题中涵盖的一些知识点: 日志类型 MySQL 中有五种日志类型: * 错误日志(-log-err):记录启动、运行、停止 MySQL 时出现的信息...
大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 35道 BTA 常问的 Java基础39道常见面试题及详细答案 Dubbo面试题 47道 ElasticSearch...
java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java面试题18道java面试题java面试题18道java面试题18道java...
2023最新100道MySQL面试题( 附答案解析)2023最新100道MySQL面试题( 附答案解析)2023最新100道MySQL面试题( 附答案解析)2023最新100道MySQL面试题( 附答案解析) 2023最新100道MySQL面试题( 附答案解析) ...
java100道面试题
一线大厂美团Java 岗 154 道面试题.zip一线大厂美团Java 岗 154 道面试题.zip一线大厂美团Java 岗 154 道面试题.zip一线大厂美团Java 岗 154 道面试题.zip一线大厂美团Java 岗 154 道面试题.zip一线大厂美团Java 岗 ...
以下将详细讨论文中的几道面试题,并提供相应的解题思路。 1. 大整数相乘 当计算机无法直接处理超出其表示范围的大整数乘法时,一种常见方法是将大整数转换为字符串,然后将其每一位与另一个大整数的每一位相乘,...
ABAP 100 道面试题 ABAP 是 SAP 公司开发的一种高级编程语言,用于开发 SAP 系统中的应用程序。本文总结了 ABAP 100 道面试题,涵盖了 ABAP 程序的结构、 Field Symbols 和 Field Groups、BDC 程序、Batch Input ...
java 面试宝典其中包含了100多道常见的面试题,及n道笔试题。
首先,文档描述了一个名为“Java 最常见200道面试题.pdf”的文件,它是一个集合了互联网公司面试题的集锦,主要针对后台、客户端、测试、数据、算法等职位。文档强调了这些面试题对于准备面试的程序员具有很高的价值...
238道大厂前端高频面试题
2022年面试题,Java基础面试题、JVM面试题、并发编程与线程面试题、设计模式面试题、SpringBoot面试题、SpringCloud面试题、MyBatis面试题、Redis面试题等。...## 20000+ 道,各类型面试题集合,索引-直通车
嵌入式研发工程师笔试试题/重解几道华为经典C语言面试题 本文档主要围绕C语言面试题展开,涵盖了字符串、字符数组、strcpy函数、strlen函数、static变量、auto变量、switch语句等多个知识点,旨在帮助读者巩固C语言...
java面试题!包括各种方面,有题,有答案,希望能帮到各位!
这700道面试题涵盖了Java的基础、进阶及高级知识,旨在帮助求职者准备全面的Java面试。以下是一些关键的知识点: 1. **Java基础** - 类与对象:理解面向对象编程的基本概念,包括封装、继承和多态。 - 引用类型:...