【牛客刷题-SQL】SQL8 查找某个年龄段的用户信息

本文介绍了如何使用SQL的WHERE子句筛选出24岁以上的用户信息,结合示例表格user_profile,展示了如何利用BETWEEN运算符进行年龄范围查询,帮助运营进行用户分析。

1. SQL8 查找某个年龄段的用户信息

🤵‍♂️ 个人主页: Redamancy_06
📒 系列专栏:《在线编程-SQL篇》
🌐推荐一款找工作神器网站:《牛客网练习入口》|笔试题库|面试经验|实习招聘内推|
🌍 无论是面试,还是刷题学习,都非常好用。而且调试在线编程题时,是可以对比测试数据对应的正确输出的。
🐋 希望大家多多支持😘一起进步呀!
📝 如果文章对你有帮助的话,欢迎评论 💬点赞 👍收藏 📂加关注

在这里插入图片描述

1.1描述

题目:现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。

1.2示例:user_profile

iddevice_idgenderageuniversityprovince
12138male21北京大学Beijing
23214male复旦大学Shanghai
36543female20北京大学Beijing
42315female23浙江大学ZheJiang
55432male25山东大学Shandong

根据示例,你的查询应返回以下结果:

device_idgenderage
2138male21
6543female20
2315female23

1.3示例1

输入:


drop table if exists user_profile;
CREATE TABLE `user_profile` (
`id` int NOT NULL,
`device_id` int NOT NULL,
`gender` varchar(14) NOT NULL,
`age` int ,
`university` varchar(32) NOT NULL,
`province` varchar(32)  NOT NULL);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学','Shanghai');
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学','BeiJing');
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学','ZheJiang');
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学','Shandong');

输出:

2138|male|21
6543|female|20
2315|female|23

1.4WHERE 子句

WHERE 子句用于过滤记录

1.4.1WHERE 子句中的运算符

下面的运算符可以在 WHERE 子句中使用:

运算符描述
=等于
<>不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式
IN指定针对某个列的多个可能值

1.4.2例子

1.4.2.1emp表

在这里插入图片描述

1.4.2.2 查询emp表中job为人工智能,使用“=”
SELECT empno,job 
FROM emp
WHERE job = "人工智能"

在这里插入图片描述

1.4.2.3查询emp表中的sal大于20000的,使用">“,”<“,”>=“,”<="也类似
SELECT ename,sal 
FROM emp
WHERE sal > 20000;

在这里插入图片描述

1.4.2.4查询emp表中deptno不等于20,"<>"的使用
SELECT ename,deptno 
FROM emp
WHERE deptno <> 20;

在这里插入图片描述

1.4.2.5查询emp表中sal的值在20000-40000,"between"的使用
SELECT ename,sal 
FROM emp
WHERE sal BETWEEN 20000 AND 40000;

在这里插入图片描述

1.4.2.6查询emp表中job有"端"字,"like"关键字的使用
SELECT ename,job 
FROM emp
WHERE job LIKE "%端%";

在这里插入图片描述

1.4.2.7查询emp表中deptno有10,30,50
SELECT ename,deptno 
FROM emp
WHERE deptno IN(10,30,50);

在这里插入图片描述

1.5通过

在这里插入图片描述

1.6解析

SELECT device_id,gender,age
FROM user_profile
WHERE age BETWEEN 20 AND 23;


SQL是一种简单的语言,但实践才是最好的学习方式;因为简单,所以上手快;因此是语言,索引需要实践。“纸上谈来终觉浅”,学习一门编程语言,最重要的还是要亲手编程,这个题单正是使用这种手把手指导的方式,教会你亲手编写SQL代码,让你实现从萌新到大佬的跨越。
点击链接赶紧练习起来吧:[https://www.nowcoder.com/link/pc_csdncpt_red_sql](https://www.nowcoder.com/link/pc_csdncpt_red_sql)
牛客网是实用的SQL网站,提供一站式求职学习资源,全部免费,适合练习SQL的同学。其型多变,能满足练习求职需求,还有解专区和讨论区,有大神提供解思路,对新手友好,不清楚语法或不理解的地方,可参考他人思路和代码 [^1]。 在方法上,可结合其他平台制定分阶段规划策略。聚焦数据库学习的三大平台 SQLZOO、LeetCode 和牛客网,分阶段从基础入门到进阶提升,再到实战冲刺,还可运用针对性技巧,如语法巩固、逻辑拆解、场景模拟等,以高效掌握 SQL 技能 [^2]。 牛客网也有具体 SQL 目解析示例,例如开窗函数求最晚日期、求初始注册日留存率等,可参考这些示例学习解思路 [^3]。 ```sql -- 开窗函数分组求最大时间,然后用子查询筛选 select n.un u_n, n.cn c_n,n.d from( select u.name un , c.name cn , l.date, (max(l.date) over(partition by l.user_id)) d from login l,user u,client c where l.user_id=u.id and c.id=l.client_id ) n where n.date=n.d order by u_n; -- 使用开窗函数求初始注册日留存率 select round( ( select count(*) -- 通过where找到第二天仍然登陆的用户记录数 from ( select -- 1找到初始登陆日期 user_id ,l.date ,min(date) over(partition by user_id) as first_date from login l ) as temp1 where temp1.date = date_add(first_date,interval 1 day) ) / ( -- 统计用户总数 select count(distinct user_id) from login ) ,3) as p -- 使用where子查询求初始注册日留存率 SELECT ROUND( COUNT(DISTINCT user_id)*1.0 /( -- 总用户量 SELECT COUNT(DISTINCT user_id) FROM login ) , 3) FROM login WHERE (user_id, date) -- 筛选出所有第二天登陆的用户 IN ( -- 如果第二天登陆的日期和id SELECT user_id , DATE_ADD(MIN(date),INTERVAL 1 DAY) FROM login GROUP BY user_id ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Redamancy_06

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值