中科软面试题-千万级数据测试

(一)有一张表,3个字段,ID、姓名、生日,此表有1000万行数据,如表一所示:请问如何统计分析出所有年龄的
具体人数数据,如表二所示。要求计算速度要快,5秒钟内要完成数据的计算。
中科软面试题-千万级数据测试_第1张图片

  • 模拟生成千万条数据,下载地址,分享码:6xry
  • 表结构,表内容如下
    中科软面试题-千万级数据测试_第2张图片
    在这里插入图片描述
  • sql语句及其执行时间(4.9s)

中科软面试题-千万级数据测试_第3张图片

 SELECT
	TIMESTAMPDIFF(YEAR, birth, CURDATE()) as 年龄,
	COUNT(*) as 人数
FROM
	employee
GROUP BY
年龄

(二)数据库设计,请按照如下需求描述进行数据设计,设计出所有的表结构,包含完整的字段以及表与表之间的外键关系。
需求:如下图所示的组织机构,该公司主要经营冰激凌,全国10000直营门店,主营业务是冰激凌销售。请完
成该公司冰激凌销售的系统的数据库设计,要求能够查询各个大区所有门店的销售额,能够查询组织机构树某个节
点的下属所有门店的销售额;并写出相应的查询SQL语句。

  • 表结构

大区表
中科软面试题-千万级数据测试_第4张图片
地区表
地区表
商品表
中科软面试题-千万级数据测试_第5张图片

  • sql
-- 计算出大区的总额  
SELECT

zname,SUM(shopPrice)
FROM
	(
		SELECT
			z. NAME zname,
			a. NAME aname,
			a.id aid
		FROM
			zone z
		LEFT JOIN area AS a ON z.id = a.zoneId
	) t
LEFT JOIN shop s ON t.aid = s.areaId WHERE zname='华南大区'

-- 计算出大区的总额  
SELECT

aname,SUM(shopPrice)
FROM
	(
		SELECT
			z. NAME zname,
			a. NAME aname,
			a.id aid
		FROM
			zone z
		LEFT JOIN area AS a ON z.id = a.zoneId
	) t
LEFT JOIN shop s ON t.aid = s.areaId WHERE aname='广州

你可能感兴趣的:(面试整理)