SQL
文章平均质量分 83
科比的缪斯
这个作者很懒,什么都没留下…
展开
-
SQL(1/14)
牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。-- 联立两表-- 每个日期新用户的次日留存数/每个日期登录新用户的个数 即为每个日期新用户留存率 SELECT one.date,IFNULL(ROUND(two.counts/one.sum,3),0) p FROM ( #每个日期新用户的次日留存数 SELECT l.date,IFNULL(t.sum,0) sum FROM login l原创 2021-01-14 11:51:53 · 304 阅读 · 0 评论 -
SQL(1/13)
异常的邮件概率现在有一个需求,让你统计正常用户发送给正常用户邮件失败的概率:有一个邮件(email)表,id为主键, type是枚举类型,枚举成员为(completed,no_completed),completed代表邮件发送是成功的,no_completed代表邮件是发送失败的。简况如下:第1行表示为id为2的用户在2020-01-11成功发送了一封邮件给了id为3的用户;…第3行表示为id为1的用户在2020-01-11没有成功发送一封邮件给了id为4的用户;…第6行表示为id为4的用户原创 2021-01-13 16:23:41 · 97 阅读 · 0 评论 -
SQL(1/12)
按照salary的累计和running_total,按照salary的累计和running_total,其中running_total为前N个当前( to_date = ‘9999-01-01’)员工的salary累计和,其他以此类推。 具体结果如下Demo展示。。CREATE TABLE salaries ( emp_no int(11) NOT NULL,salary int(11) NOT NULL,from_date date NOT NULL,to_date date NOT NULL,原创 2021-01-12 16:49:41 · 98 阅读 · 0 评论 -
SQL(1/11)
查找排除最大、最小salary之后的当前员工的平均工资avg_salary查找排除最大、最小salary之后的当前(to_date = ‘9999-01-01’ )员工的平均工资avg_salary。CREATE TABLE salaries ( emp_no int(11) NOT NULL,salary int(11) NOT NULL,from_date date NOT NULL,to_date date NOT NULL,PRIMARY KEY (emp_no,from_date));原创 2021-01-11 20:44:02 · 79 阅读 · 0 评论 -
SQL(1/10)
将所有获取奖金的员工当前的薪水增加10%请你写出更新语句,将所有获取奖金的员工当前的(salaries.to_date=‘9999-01-01’)薪水增加10%。(emp_bonus里面的emp_no都是当前获奖的所有员工)create table emp_bonus(emp_no int not null,btype smallint not null);CREATE TABLE salaries (emp_no int(11) NOT NULL,salary int(11) NOT NUL原创 2021-01-10 13:05:33 · 131 阅读 · 0 评论 -
SQL(1/9)
删除重复的记录,只保留最小的id对应的记录删除emp_no重复的记录,只保留最小的id对应的记录。CREATE TABLE IF NOT EXISTS titles_test (id int(11) not null primary key,emp_no int(11) NOT NULL,title varchar(50) NOT NULL,from_date date NOT NULL,to_date date DEFAULT NULL);insert into titles_test v原创 2021-01-09 22:13:59 · 104 阅读 · 0 评论 -
SQL(1/8)
创建索引针对如下表actor结构创建索引:(注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作,mysql支持ALTER TABLE创建索引)CREATE TABLE actor (actor_id smallint(5) NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL,last_name varchar(45) NOT NULL,last_update datetime原创 2021-01-08 10:41:14 · 70 阅读 · 0 评论 -
SQL(1/7)
将employees表的所有员工的last_name和first_name拼接起来作为Name将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分(注:sqllite,字符串拼接为 || 符号,不支持concat函数,mysql支持concat函数)CREATE TABLE employees ( emp_no int(11) NOT NULL,birth_date date NOT NULL,first_name varchar(14原创 2021-01-07 10:35:42 · 69 阅读 · 0 评论 -
SQL(1/6)
汇总各个部门当前员工的title类型的分配数目汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的当前(dept_emp.to_date = ‘9999-01-01’)员工的当前(titles.to_date = ‘9999-01-01’)title以及该类型title对应的数目count,结果按照dept_no升序排序(注:因为员工可能有离职,所有dept_emp里面to_date不为’9999-01-01’就已经离职了,不计入统计,而且原创 2021-01-06 10:45:47 · 75 阅读 · 0 评论 -
SQL(1/5)
查找所有员工自入职以来的薪水涨幅情况查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面)CREATE TABLE employees (emp_no int(11) NOT NULL,birth_date原创 2021-01-05 10:40:22 · 85 阅读 · 0 评论 -
SQL(1/4)
统计出当前各个title类型对应的员工当前薪水对应的平均工资统计出当前(titles.to_date=‘9999-01-01’)各个title类型对应的员工当前(salaries.to_date=‘9999-01-01’)薪水对应的平均工资。结果给出title以及平均工资avg。CREATE TABLE salaries (emp_no int(11) NOT NULL,salary int(11) NOT NULL,from_date date NOT NULL,to_date date NO原创 2021-01-04 10:33:57 · 205 阅读 · 0 评论 -
SQL(1/3)
获取所有员工当前的manager获取所有员工当前的(dept_manager.to_date=‘9999-01-01’)manager,如果员工是manager的话不显示(也就是如果当前的manager是自己的话结果不显示)。输出结果第一列给出当前员工的emp_no,第二列给出其manager对应的emp_no。CREATE TABLE dept_emp (emp_no int(11) NOT NULL, – ‘所有的员工编号’dept_no char(4) NOT NULL, – ‘部门编号’f原创 2021-01-03 10:20:30 · 129 阅读 · 0 评论 -
SQL(1/2)
查找所有员工入职时候的薪水情况查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序(请注意,一个员工可能有多次涨薪的情况)CREATE TABLE employees (emp_no int(11) NOT NULL,birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varchar(16) NOT NULL,gender char(1) NOT NULL,hire_d原创 2021-01-02 09:54:22 · 152 阅读 · 0 评论