MySQL面试题二

 

最近面试很多公司喜欢考SQL,现在把SQL面试题给大家

这是某x京xx科技公司在一轮面试之后又给的一套笔试题

要求在规定时间内写完,提交到HR给的邮箱,题目信息和解答如下

题目:

题解:

 1、使用sql选出下表中6个指标中至少4个指标大于50的城市

-- 1.使用sql选出下表中6个指标中至少4个指标大于50的城市
select city
from (select t.city city,
case when oc>50 then 1 else 0 end n1,
case when sc>50 then 1 else 0 end n2,
case when pc>50 then 1 else 0 end n3,
case when hc>50 then 1 else 0 end n4,
case when gc>50 then 1 else 0 end n5,
case when ghc>50 then 1 else 0 end n6
from t_city t) c
where (c.n1+c.n2+c.n3+c.n4+c.n5+c.n6)>=4;

 

-- 自变量计数版
select city,(c.n1+c.n2+c.n3+c.n4+c.n5+c.n6) m
from (select t.city,s.n n,
case when oc>50 then n+1 else 0 end n1,
case when sc>50 then n+1 else 0 end n2,
case when pc>50 then n+1 else 0 end n3,
case when hc>50 then n+1 else 0 end n4,
case when gc>50 then n+1 else 0 end n5,
case when ghc>50 then n+1 else 0 end n6
from t_city t 
join (select city,0 n from t_city) s on t.city=s.city) as c
where (c.n1+c.n2+c.n3+c.n4+c.n5+c.n6)>=4

 2、使用sql 选出下表中每个type指标 value值最大的前两个城市

-- 2.使用sql 选出下表中每个type指标 value值最大的前两个城市
select type,substring_index(group_concat(city order by value desc),',',2) city
from t_tv
group by type;

 3、使用sql根据表A 表B 计算出表C (要求两种方法)

3.使用sql根据表A 表B 计算出表C (要求两种方法)
## 方法一
select t.date,t.v1,t.v2 from 
(select a.date,v1,v2
from a join b on a.date=b.date
union all
select distinct a.date,v1,0
from a join b
where a.date not in (select date from b)
union all
select distinct b.date,0,v2
from a join b
where b.date not in (select date from a)) as t
order by length(t.date),t.date;
# 方法二
select t.date,t.v1,t.v2 from 
(select a.date,v1,coalesce(v2,0) v2
from a left join b on a.date=b.date
union
select b.date,coalesce(v1,0) v1,v2
from a right join b on a.date=b.date) as t
order by length(t.date),t.date;

测试数据:

/*
 Navicat Premium Data Transfer

 Source Server         : localhost_3306
 Source Server Type    : MySQL
 Source Server Version : 50556
 Source Host           : localhost:3306
 Source Schema         : examdb

 Target Server Type    : MySQL
 Target Server Version : 50556
 File Encoding         : 65001

 Date: 08/01/2020 15:13:31
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_city
-- ----------------------------
DROP TABLE IF EXISTS `t_city`;
CREATE TABLE `t_city`  (
  `city` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '城市名称',
  `oc` int(11) NULL DEFAULT NULL,
  `sc` int(11) NULL DEFAULT NULL,
  `pc` int(11) NULL DEFAULT NULL,
  `hc` int(11) NULL DEFAULT NULL,
  `gc` int(11) NULL DEFAULT NULL,
  `ghc` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of t_city
-- ----------------------------
INSERT INTO `t_city` VALUES ('青岛', 96, 50, 56, 55, 43, 21);
INSERT INTO `t_city` VALUES ('北京', 74, 16, 96, 29, 54, 4);
INSERT INTO `t_city` VALUES ('南京', 5, 52, 18, 82, 18, 83);

SET FOREIGN_KEY_CHECKS = 1;



SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_tv
-- ----------------------------
DROP TABLE IF EXISTS `t_tv`;
CREATE TABLE `t_tv`  (
  `city` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '城市名称',
  `type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '指标',
  `value` int(11) NULL DEFAULT NULL COMMENT '值'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of t_tv
-- ----------------------------
INSERT INTO `t_tv` VALUES ('青岛', 'v_3', 4);
INSERT INTO `t_tv` VALUES ('北京', 'v_1', 94);
INSERT INTO `t_tv` VALUES ('南京', 'v_1', 27);
INSERT INTO `t_tv` VALUES ('济南', 'v_1', 9);
INSERT INTO `t_tv` VALUES ('青岛', 'v_2', 97);
INSERT INTO `t_tv` VALUES ('北京', 'v_2', 61);
INSERT INTO `t_tv` VALUES ('南京', 'v_2', 29);
INSERT INTO `t_tv` VALUES ('济南', 'v_2', 56);
INSERT INTO `t_tv` VALUES ('青岛', 'v_3', 58);
INSERT INTO `t_tv` VALUES ('北京', 'v_3', 58);
INSERT INTO `t_tv` VALUES ('南京', 'v_3', 99);
INSERT INTO `t_tv` VALUES ('济南', 'v_3', 37);

SET FOREIGN_KEY_CHECKS = 1;



SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for a
-- ----------------------------
DROP TABLE IF EXISTS `a`;
CREATE TABLE `a`  (
  `date` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `v1` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of a
-- ----------------------------
INSERT INTO `a` VALUES ('2019/1/1', 74);
INSERT INTO `a` VALUES ('2019/1/2', 54);
INSERT INTO `a` VALUES ('2019/1/3', 19);
INSERT INTO `a` VALUES ('2019/1/6', 84);
INSERT INTO `a` VALUES ('2019/1/7', 2);
INSERT INTO `a` VALUES ('2019/1/8', 78);
INSERT INTO `a` VALUES ('2019/1/9', 19);
INSERT INTO `a` VALUES ('2019/1/11', 100);

SET FOREIGN_KEY_CHECKS = 1;




SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for b
-- ----------------------------
DROP TABLE IF EXISTS `b`;
CREATE TABLE `b`  (
  `date` varchar(29) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `v2` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of b
-- ----------------------------
INSERT INTO `b` VALUES ('2019/1/1', 13);
INSERT INTO `b` VALUES ('2019/1/2', 3);
INSERT INTO `b` VALUES ('2019/1/3', 29);
INSERT INTO `b` VALUES ('2019/1/4', 81);
INSERT INTO `b` VALUES ('2019/1/5', 37);
INSERT INTO `b` VALUES ('2019/1/8', 56);
INSERT INTO `b` VALUES ('2019/1/9', 53);
INSERT INTO `b` VALUES ('2019/1/10', 50);

SET FOREIGN_KEY_CHECKS = 1;


发布了114 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq262593421/article/details/103890865