SQL子查询

进行分步骤计算

需要编写多个sql语句分步骤计算,每个sql语句可以理解为一个子查询

格式: (查询语句) 可以获取子查询语句的结果,把结果可以当成数据进行判断,或者当做一个新的表数据进行处理
1、创建数据表tb_member

create table tb_member
(
    id          int auto_increment primary key comment '用户编号',
    name        varchar(20) comment '用户姓名',
    gender      varchar(10) comment '用户性别',
    birthday    varchar(20) comment '出生日期',
    address     varchar(100) comment '用户住址',
    email       varchar(20) comment '用户邮箱',
    create_time datetime comment '注册时间'
);

insert into tb_member(name, gender, birthday, address, email, create_time)
values ('陈莹', '女', '1987-07-14', '四川省', 'awu@hotmail.com', '2021/04/02 23:27:40'),
       ('陈阳', '男', '1998-06-26', '天津市', 'zcao@hotmail.com', '2022/04/21 14:26:26'),
       ('白娟', '男', '1988-10-25', '新疆维吾尔自治区', 'zhenglei@hotmail.com', '2022/02/15 04:30:17'),
       ('曹阳', '女', '1989-07-09', '湖南省', 'ideng@hotmail.com', '2024/01/04 11:16:40'),
       ('向瑜', '女', '1985-08-23', '内蒙古自治区', 'xiuyingliao@gmail.com', '2023/03/05 02:09:46'),
       ('刘丽娟', '女', '1988-08-19', '广西壮族自治区', 'juanhou@hotmail.com', '2023/05/23 20:36:47'),
       ('袁红', '女', '2000-01-04', '贵州省', 'xiaona@gmail.com', '2022/03/29 02:35:22'),
       ('王雪梅', '男', '1995-06-22', '江苏省', 'minfan@gmail.com', '2023/09/19 03:48:24'),
       ('崔瑞', '女', '1995-04-18', '江苏省', 'wei97@yahoo.com', '2022/09/29 01:17:31'),
       ('张丽', '男', '1990-10-17', '甘肃省', 'junyao@yahoo.com', '2023/12/10 01:45:35'),
       ('李兰英', '女', '1988-08-07', '吉林省', 'dhan@hotmail.com', '2022/08/19 04:57:27'),
       ('周娜', '男', '1987-02-21', '湖南省', 'yang33@gmail.com', '2024/01/16 02:23:42'),
       ('汪秀兰', '女', '1988-02-17', '云南省', 'leiguiying@yahoo.com', '2021/08/06 15:08:42'),
       ('李婷婷', '男', '1999-04-14', '香港特别行政区', 'fang46@hotmail.com', '2023/08/01 05:43:54'),
       ('罗小红', '女', '1983-03-28', '天津市', 'lifang@gmail.com', '2022/04/14 15:41:16'),
       ('潘坤', '女', '1992-06-12', '台湾省', 'dongxiulan@yahoo.com', '2023/10/06 09:31:06'),
       ('张建', '男', '1986-02-09', '贵州省', 'leihuang@hotmail.com', '2022/01/30 17:40:11'),
       ('许娜', '女', '1995-10-13', '重庆市', 'guiyingyin@gmail.com', '2024/01/23 09:55:53'),
       ('张秀荣', '女', '1994-06-15', '陕西省', 'zhonggang@gmail.com', '2023/10/24 16:34:02'),
       ('郭佳', '男', '1991-08-25', '河北省', 'pliao@yahoo.com', '2023/03/11 19:17:37'),
       ('杨兵', '男', '1993-11-13', '江苏省', 'hren@hotmail.com', '2022/09/10 23:31:34'),
       ('李桂香', '男', '1992-09-02', '黑龙江省', 'yongzheng@gmail.com', '2021/09/18 18:59:22'),
       ('柳琳', '男', '1997-05-09', '甘肃省', 'min73@gmail.com', '2022/10/08 22:03:36'),
       ('龚莉', '女', '1998-12-12', '河南省', 'xiulan59@yahoo.com', '2021/08/09 13:56:43'),
       ('张玲', '女', '1991-04-29', '四川省', 'xueyang@gmail.com', '2021/07/08 23:55:01'),
       ('林凤英', '女', '1989-07-05', '四川省', 'gang38@gmail.com', '2023/03/26 19:33:59'),
       ('武勇', '女', '1996-07-20', '河北省', 'gangfeng@hotmail.com', '2022/03/21 00:20:10'),
       ('阎红霞', '男', '1992-01-05', '上海市', 'uxia@hotmail.com', '2023/10/01 14:18:45'),
       ('张玉兰', '男', '1998-01-26', '甘肃省', 'uluo@gmail.com', '2022/05/26 16:27:18'),
       ('蒋明', '女', '1988-11-10', '吉林省', 'hzeng@hotmail.com', '2022/12/16 02:35:18'),
       ('牟晨', '男', '1984-06-25', '西藏自治区', 'gang61@yahoo.com', '2023/09/18 21:12:21'),
       ('宋颖', '男', '1991-01-05', '安徽省', 'fang34@yahoo.com', '2021/09/22 19:55:47'),
       ('郑畅', '女', '1987-03-05', '河北省', 'dbai@gmail.com', '2022/10/31 05:20:18'),
       ('蒋晶', '女', '1983-07-08', '河北省', 'ndeng@gmail.com', '2024/01/24 11:16:40'),
       ('向玉英', '男', '1991-12-01', '广东省', 'mindeng@hotmail.com', '2022/09/15 17:00:53'),
       ('储凯', '男', '1983-09-22', '天津市', 'yanchang@hotmail.com', '2021/11/19 23:26:54'),
       ('马平', '女', '1984-07-16', '湖南省', 'wanjie@yahoo.com', '2021/07/26 19:49:49'),
       ('阮凯', '女', '1988-10-24', '天津市', 'kangfang@yahoo.com', '2023/09/30 15:55:13'),
       ('郑瑜', '女', '1994-12-26', '贵州省', 'ping71@hotmail.com', '2023/06/20 12:39:15'),
       ('陈英', '男', '1990-07-05', '黑龙江省', 'leisun@yahoo.com', '2022/12/26 20:26:34'),
       ('李欣', '男', '1996-01-22', '河南省', 'chaotian@gmail.com', '2023/01/20 07:59:52'),
       ('黎秀梅', '男', '1990-02-20', '云南省', 'ahu@gmail.com', '2023/03/31 04:03:49'),
       ('支洁', '男', '1989-09-21', '上海市', 'yongzeng@yahoo.com', '2023/08/03 07:46:39'),
       ('张桂兰', '女', '1995-05-03', '台湾省', 'qiangcui@hotmail.com', '2023/08/31 00:25:48'),
       ('刘洋', '男', '1987-07-17', '湖北省', 'weiyi@gmail.com', '2023/12/01 16:11:06'),
       ('鲁凤英', '女', '1987-08-22', '湖南省', 'gangmeng@yahoo.com', '2023/03/20 00:49:56'),
       ('桂云', '男', '1984-08-06', '湖北省', 'cwan@yahoo.com', '2022/03/05 05:39:47'),
       ('李桂芳', '男', '1996-05-24', '甘肃省', 'ping62@yahoo.com', '2022/09/10 04:32:11'),
       ('傅云', '女', '1991-03-01', '山西省', 'shichao@hotmail.com', '2021/03/29 01:19:49'),
       ('王玉珍', '男', '1987-11-28', '广东省', 'vpeng@yahoo.com', '2021/05/26 23:12:57');
select * from tb_member;

第一题、求会员中年龄最大的会员信息
– 先找到年龄最大的会员,
分析(提取年份信息,然后用当前时间减去注册会员时间)

select max(year(current_date) - year(birthday))  as max_age from tb_member;

– 根据最大年龄筛选会员

select * from tb_member where year(current_date) - year(birthday) = (select max(year(current_date) - year(birthday))  as max_age from tb_member);

第二题、根据会员注册时间,将用户分为新用户(小于等于90天) 和老用户(大于90天)
分析,先使用datdeiff()提取注册会员天数,

select *,datediff(current_timestamp,create_time) as diff_date from tb_member;

然后用if语句判断是否是新用户

select *,if(diff_date<=90,'新用户','老用户') as role from (select *,datediff(current_timestamp,create_time)  as diff_date from tb_member) tb_diff;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值