2019独角兽企业重金招聘Python工程师标准>>>

1、建表

customers 顾客表

products 产品表

orders 订单表

-- 顾客表
CREATE TABLE customers (c_id INT NOT NULL AUTO_INCREMENT,lastname VARCHAR(255),firstname VARCHAR(255),address VARCHAR(255),birthday DATETIME,PRIMARY KEY (c_id)
);
-- 产品表
CREATE TABLE products (p_id INT NOT NULL AUTO_INCREMENT,productname VARCHAR(255),price FLOAT(12 , 3 ), -- 写 3 是为了等一下试一下 round 函数stock INT,PRIMARY KEY (p_id)
);
-- 订单表
CREATE TABLE orders (o_id INT NOT NULL AUTO_INCREMENT,c_id INT,p_id INT,quantity INT,create_time DATETIME,PRIMARY KEY (o_id),-- 曾经有前辈和我说,在 Mysql 中外键约束不适合在高并发情况下使用,容易死锁,这里只是练习FOREIGN KEY (c_id) REFERENCES customers (c_id),FOREIGN KEY (p_id)REFERENCES products (p_id)
);

2、增加数据

-- Add some data to customers
insert into customers values (null, '三', '张', '上海市黄浦区', '1988-09-29 18:20:18');
insert into customers values (null, '四', '李', '上海市静安区', '1992-01-15 19:17:55');
insert into customers values (null, '无', '钱', '上海市浦东新区', '1982-07-25 05:21:37');
insert into customers values (null, '吴', '周', '上海市虹口区', '1995-02-18 12:30:09');
insert into customers values (null, '王', '郑', '上海市徐汇区', '1999-01-19 11:45:18');
-- Just select
SELECT *
FROMcustomers;
-- Add some data to products
insert into products values (null, '无线路由器', 110.091, 100);
insert into products values (null, '雷蛇鼠标', 320.50, 200);
insert into products values (null, 'cherry 键盘', 600.1, 300);
insert into products values (null, 'AOG 显示器', 1100.0, 400);
insert into products values (null, '甜筒', 3, 500);
-- Just select
SELECT *
FROMproducts;
-- Let buy some products for add data to orders
insert into orders values (null, 1, 1, 1, date_sub(now(),interval 1 day));
insert into orders values (null, 1, 2, 2, date_sub(now(),interval 1 day));
insert into orders values (null, 1, 3, 3, date_sub(now(),interval 2 day));
insert into orders values (null, 1, 4, 4, date_sub(now(),interval 2 day));
insert into orders values (null, 2, 5, 7, date_sub(now(),interval 5 hour));
insert into orders values (null, 3, 2, 1, date_sub(now(),interval 5 hour));
insert into orders values (null, 4, 4, 2, now());
insert into orders values (null, 4, 5, 2, now());
-- Just select
SELECT *
FROMorders;

3、做统计

(1)当天 雷蛇鼠标的销售额

-- 当天 雷蛇鼠标的销售额
SELECT SUM(o.quantity) AS router_sales_quantity
FROMorders oLEFT JOINproducts p ON o.p_id = p.p_id
WHEREp.productname = '雷蛇鼠标'AND DATE(o.create_time) = DATE(NOW());

(2)雷蛇鼠标 在 80 后人群中的销售额

-- 雷蛇鼠标 在 80 后人群中的销售额
SELECT round(sum(o.quantity * p.price), 2) as productname_sum_money
FROMorders oLEFT JOINproducts p ON o.p_id = p.p_idLEFT JOINcustomers c ON o.c_id = c.c_id
WHEREp.productname = '雷蛇鼠标'AND EXTRACT(YEAR FROM c.birthday) BETWEEN '1980' AND '1990';

(3)80 , 90 后人群的总销售额和平均销售额

-- 80 , 90 后人群的总销售额和平均销售额
SELECT CASEWHENEXTRACT(YEAR FROM c.birthday) >= '1980'AND EXTRACT(YEAR FROM c.birthday) < '1990'THEN'80'WHENEXTRACT(YEAR FROM c.birthday) >= '1990'AND EXTRACT(YEAR FROM c.birthday) < '2000'THEN'90'ELSE 'null'END AS age,ROUND(SUM(o.quantity * p.price), 2) AS sum_money,ROUND(AVG(o.quantity * p.price), 2) AS avg_money
FROMorders oLEFT JOINproducts p ON o.p_id = p.p_idLEFT JOINcustomers c ON o.c_id = c.c_id
GROUP BY age;

...

有空继续增加统计查询的内容

转载于:https://my.oschina.net/yudongyang/blog/1539967

Mysql 查询统计练习相关推荐

  1. mysql一秒查询次数_单个select语句实现MySQL查询统计次数

    单个select语句实现MySQL查询统计次数 单个select语句实现MySQL查询统计次数的方法用处在哪里呢?用处太多了,比如一个成绩单,你要查询及格得人数与不及格的人数,怎么一次查询出来? My ...

  2. Mysql查询统计按年月日(年、季、月、周、日)

    Mysql查询统计:按年.季.月.周.日 按年统计交易金额. SELECTsum(goods_fee),YEAR (FROM_UNIXTIME(create_time, '%Y-%m-%d')) FR ...

  3. MySQL查询统计今年12个月的数据,没有默认为空

    此处先省略二百字的废话 做报表统计的时候,常常需要在MySQL端用sql统计近12个月的数据,或者近30天的数据. 假如遇到当月没有数据,或者当天没有数据时,默认为0. SELECTCASE WHEN ...

  4. MySQL 查询统计 日期查询

    文章目录 1. 查询前7天的日期 2. 查询订单表出现日期,成交额总和 3 根据日期统计数据 1. 查询前7天的日期 select a.click_date from (SELECT date_sub ...

  5. mysql查询统计不及格人数_MySQL,查询及格人数,不及格人数

    一个表score,字段是name,class,score.分别代表姓名,所在班级,分数. 要求用一条语句查出每个班的及格人数和不及格人数,格式为:class,及格人数,不及格人数. SELECT `c ...

  6. mysql查询女生的成绩_MySQL 统计查询实现代码

    $conn = @mysql_connect("localhost","root","root123"); if (!$conn){ die ...

  7. mysql实现统计查询_MySQL 统计查询实现代码

    统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. 语法: SELECT COUNT(column) FROM tb_name 该 SQL 语法用于统计某一字段的数 ...

  8. mysql 同一字段分别统计,mysql查询同一个字段根据不同值分组成不同列统计

    最近工作繁忙,没时间写技术博客,简单发点写过的主要sql吧 同字段不同值分列统计 其实就是利用了一下mysql的case... then...做聚合 SELECT t.ads_id, t.positi ...

  9. MySQL查询某个列中相同值的数量统计

    前言 今天突然想到自己写的课表查询Api没有加统计功能,因此今天加上了统计,记录了请求的类型.事件和时间,等新学期到来的时候就能用上了,毕竟刚开学同学们还是比较在意这学期都有什么课的哈哈哈,而且也能够 ...

最新文章

  1. python检查URL是否能正常访问
  2. 在Linux上安装Python 3
  3. Java 编程的动态性,第 6 部分: 利用 Javassist 进行面向方面的更改--转载
  4. Windows批处理(cmd/bat)常用命令
  5. 机器学习中的距离和损失函数
  6. 两道挺有意思的思考题
  7. 力扣700. 二叉搜索树中的搜索(JavaScript)
  8. 计算机图像类型ppt,计算机图像处理.ppt
  9. MYSQL-中文检索匹配与正则表达式
  10. 程序员520❤七夕情人节表白代码Html+Js+Css花瓣相册网页模板❤程序员表白必备...
  11. 高处的圣地 --读《消失的地平线》
  12. IOS 七种手势详解(动图+Demo下载)
  13. java 抓取搜狗微信_搜狗微信公众号文章抓取
  14. 网球爱好者小程序的设计与实现
  15. MS8413光纤同轴解码芯片
  16. 5G的10大典型应用场景,及详细应用功能
  17. vue项目 设置scrollTop不起作用(解决方法及原因)
  18. 云服务器ecs增加带宽,老鸟告诉你云服务器带宽多少合适?
  19. WEB前端整套教程html+divcss+javascript+jquery+html5-孙琪峥-专题视频课程
  20. 计算机教室在哪儿英语,教室的英文是什么

热门文章

  1. git pull 报错:The following untracked working tree files would be overwritten by merge
  2. 面试官问:JS的this指向
  3. Linux跨平台远程控制
  4. Spring事务管理(三)-PlatformmTransactionManager解析和事务传播方式原理
  5. MySQL Date 函数
  6. Linux下启动tomcat报java.lang.OutOfMemoryError: PermGen space
  7. shell在一个大文件找出想要的一段字符串操作技巧
  8. 关于是否在C#中加入不可空引用类型的争论
  9. tcp有限状态机分析
  10. 使用Css截取字符串