SQL语句每日一练十四

news2024/5/18 16:28:46

1378. 使用唯一标识码替换员工ID

题目

Employees 表:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| name          | varchar |
+---------------+---------+
在 SQL 中,id 是这张表的主键。
这张表的每一行分别代表了某公司其中一位员工的名字和 ID 。

EmployeeUNI 表:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| unique_id     | int     |
+---------------+---------+
在 SQL 中,(id, unique_id) 是这张表的主键。
这张表的每一行包含了该公司某位员工的 ID 和他的唯一标识码(unique ID)。

展示每位用户的 唯一标识码(unique ID );如果某位员工没有唯一标识码,使用 null 填充即可。

答案

# Write your MySQL query statement below
select t1.unique_id,t2.name
from EmployeeUNI t1
right join Employees t2 using(id)







1393. 股票的资本损益

题目

Stocks 表:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| stock_name    | varchar |
| operation     | enum    |
| operation_day | int     |
| price         | int     |
+---------------+---------+
(stock_name, day) 是这张表的主键(具有唯一值的列的组合)
operation 列使用的是一种枚举类型,包括:('Sell','Buy')
此表的每一行代表了名为 stock_name 的某支股票在 operation_day 这一天的操作价格。
此表可以保证,股票的每个“卖出”操作在前一天都有相应的“买入”操作。并且,股票的每个“买入”操作在即将到来的一天都有相应的“卖出”操作。

编写解决方案报告每只股票的 资本损益

股票的 资本利得/损失 是指一次或多次买卖该股票后的总收益或损失。

任意顺序 返回结果表。

答案

# Write your MySQL query statement below
select stock_name,
       sum(
            case 
            when operation = 'Buy' then -price
            when operation = 'Sell' then price
            end
       ) as capital_gain_loss
from Stocks
group by stock_name;







1407. 排名靠前的旅行者

题目

表:Users

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| name          | varchar |
+---------------+---------+
id 是该表中具有唯一值的列。
name 是用户名字。

表:Rides

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| user_id       | int     |
| distance      | int     |
+---------------+---------+
id 是该表中具有唯一值的列。
user_id 是本次行程的用户的 id, 而该用户此次行程距离为 distance 。

编写解决方案,报告每个用户的旅行距离。

返回的结果表单,以 travelled_distance 降序排列 ,如果有两个或者更多的用户旅行了相同的距离, 那么再以 name 升序排列

答案

# Write your MySQL query statement below
select t1.name,ifnull(sum(t2.distance),0) as travelled_distance 
from Users t1
left join Rides t2 on t1.id = t2.user_id
group by t2.user_id
order by travelled_distance desc,t1.name asc 







1484. 按日期分组销售产品

题目

Activities

+-------------+---------+
| 列名         | 类型    |
+-------------+---------+
| sell_date   | date    |
| product     | varchar |
+-------------+---------+
该表没有主键(具有唯一值的列)。它可能包含重复项。
此表的每一行都包含产品名称和在市场上销售的日期。

编写解决方案找出每个日期、销售的不同产品的数量及其名称。
每个日期的销售产品名称应按词典序排列。
返回按 sell_date 排序的结果表。

答案

# Write your MySQL query statement below
select sell_date,
        count(distinct(product)) as num_sold,
        group_concat(distinct product order by product separator ',') as products
from Activities
group by sell_date
order by sell_date asc







1517. 查找拥有有效邮箱的用户

题目

表: Users

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| name          | varchar |
| mail          | varchar |
+---------------+---------+
user_id 是该表的主键(具有唯一值的列)。
该表包含了网站已注册用户的信息。有一些电子邮件是无效的。

编写一个解决方案,以查找具有有效电子邮件的用户。

一个有效的电子邮件具有前缀名称和域,其中:

  1. 前缀 名称是一个字符串,可以包含字母(大写或小写),数字,下划线 '_' ,点 '.' 和/或破折号 '-' 。前缀名称 必须 以字母开头。
  2. '@leetcode.com'

以任何顺序返回结果表。

答案

select user_id,name,mail
from Users
where mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$';







1527. 患某种疾病的患者

题目

患者信息表: Patients

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| patient_id   | int     |
| patient_name | varchar |
| conditions   | varchar |
+--------------+---------+
在 SQL 中,patient_id (患者 ID)是该表的主键。
'conditions' (疾病)包含 0 个或以上的疾病代码,以空格分隔。
这个表包含医院中患者的信息。

查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1

答案

# Write your MySQL query statement below
select patient_id,patient_name,conditions
from Patients
where conditions regexp '\\bDIAB1.*';







1581. 进店却未进行过交易的顾客

题目

表:Visits

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| visit_id    | int     |
| customer_id | int     |
+-------------+---------+
visit_id 是该表中具有唯一值的列。
该表包含有关光临过购物中心的顾客的信息。

表:Transactions

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| transaction_id | int     |
| visit_id       | int     |
| amount         | int     |
+----------------+---------+
transaction_id 是该表中具有唯一值的列。
此表包含 visit_id 期间进行的交易的信息。

有一些顾客可能光顾了购物中心但没有进行交易。请你编写一个解决方案,来查找这些顾客的 ID ,以及他们只光顾不交易的次数。

答案

# Write your MySQL query statement below
select t1.customer_id as customer_id,
       sum(if(t2.visit_id is null,1,0)) as count_no_trans
from Visits t1
left join Transactions t2 on t1.visit_id = t2.visit_id
group by t1.customer_id having count_no_trans > 0;







1587. 银行账户概要 II

题目

表: Users

+--------------+---------+
| Column Name  | Type    |
+--------------+---------+
| account      | int     |
| name         | varchar |
+--------------+---------+
account 是该表的主键(具有唯一值的列)。
该表的每一行都包含银行中每个用户的帐号。
表中不会有两个用户具有相同的名称。

表: Transactions

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| trans_id      | int     |
| account       | int     |
| amount        | int     |
| transacted_on | date    |
+---------------+---------+
trans_id 是该表主键(具有唯一值的列)。
该表的每一行包含了所有账户的交易改变情况。
如果用户收到了钱, 那么金额是正的; 如果用户转了钱, 那么金额是负的。
所有账户的起始余额为 0。

编写解决方案, 报告余额高于 10000 的所有用户的名字和余额. 账户的余额等于包含该账户的所有交易的总和。

答案

select t1.name,sum(t2.amount) as balance    
from Users t1
left join Transactions t2 on t1.account = t2.account
group by t1.account having balance > 10000;







1633. 各赛事的用户注册率

题目

用户表: Users

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| user_id     | int     |
| user_name   | varchar |
+-------------+---------+
user_id 是该表的主键(具有唯一值的列)。
该表中的每行包括用户 ID 和用户名。

注册表: Register

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| contest_id  | int     |
| user_id     | int     |
+-------------+---------+
(contest_id, user_id) 是该表的主键(具有唯一值的列的组合)。
该表中的每行包含用户的 ID 和他们注册的赛事。

编写解决方案统计出各赛事的用户注册百分率,保留两位小数。

返回的结果表按 percentage降序 排序,若相同则按 contest_id升序 排序。

答案

# Write your MySQL query statement below
select contest_id,
       round((count(*)/(select count(*) from Users))*100 , 2) as percentage 
from Register
group by contest_id 
order by percentage desc,contest_id asc;







1661. 每台机器的进程平均运行时间

题目

表: Activity

+----------------+---------+
| Column Name    | Type    |
+----------------+---------+
| machine_id     | int     |
| process_id     | int     |
| activity_type  | enum    |
| timestamp      | float   |
+----------------+---------+
该表展示了一家工厂网站的用户活动。
(machine_id, process_id, activity_type) 是当前表的主键(具有唯一值的列的组合)。
machine_id 是一台机器的ID号。
process_id 是运行在各机器上的进程ID号。
activity_type 是枚举类型 ('start', 'end')。
timestamp 是浮点类型,代表当前时间(以秒为单位)。
'start' 代表该进程在这台机器上的开始运行时间戳 , 'end' 代表该进程在这台机器上的终止运行时间戳。
同一台机器,同一个进程都有一对开始时间戳和结束时间戳,而且开始时间戳永远在结束时间戳前面。

现在有一个工厂网站由几台机器运行,每台机器上运行着 相同数量的进程 。编写解决方案,计算每台机器各自完成一个进程任务的平均耗时。

完成一个进程任务的时间指进程的'end' 时间戳 减去 'start' 时间戳。平均耗时通过计算每台机器上所有进程任务的总耗费时间除以机器上的总进程数量获得。

结果表必须包含machine_id(机器ID) 和对应的 average time(平均耗时) 别名 processing_time,且四舍五入保留3位小数。

答案

# Write your MySQL query statement below
select machine_id,
       round(sum(case when activity_type = 'end' then timestamp 
                      else -timestamp end)/count(distinct process_id) , 3) as processing_time 
from Activity
group by machine_id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1641655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

android天气实战

页面绘制 问题1、下拉框需要背景为透明 我懒得写全部省份就写了5个所以不需要往下 图标准备 iconfont-阿里巴巴矢量图标库几坤年没来这了好怀念啊,图标库选择下雨的图标等 准备网络请求 0、API接口准备 api免费七日天气接口API 未来一周天气预报api (tianqiap…

SVM直观理解

https://tangshusen.me/2018/10/27/SVM/ https://www.bilibili.com/video/BV16T4y1y7qj/?spm_id_from333.337.search-card.all.click&vd_source8272bd48fee17396a4a1746c256ab0ae SVM是什么? 先来看看维基百科上对SVM的定义: 支持向量机(英语:su…

[BLE] Heart Rate Protocol - Sensor

写在前面 目前我从网上找到的有关BLE心率协议的博文内容良莠不齐,很难让人根据文章内容来全面理解心率服务;此外SIG网站上有关心率服务的文档比较多,内容比较碎,需要读者从多个文档中将需要的内容拼接起来,因此写下这…

【动态规划】路径问题|不同路径I|不同路径II|珠宝的最高价值|下降路径的最小和|最小路径和|

一、不同路径I 62. 不同路径 - 力扣(LeetCode) 💡细节: 1.多开一行和一列(跟一维数组多开一个位置一样),这样方便初始化 2.状态转移方程:注意走一步并不是多一种走的路径&#xff0…

在编程的世界里,我相信每一行代码都是一次对未来的投资

😀前言 突然有感而发也是激励自己互勉 🏠个人主页:尘觉主页 文章目录 在编程的世界里,我相信每一行代码都是一次对未来的投资类似句子编程的本质代码的价值构建可持续的未来结语 在编程的世界里,我相信每一行代码都是一…

数据库基础--MySQL多表查询之外键约束

MySQL多表关系 一对一 顾名思义即一个对应一个的关系,例如身份证号对于每个人来说都是唯一的,即个人信息表与身份证号信息表是一对一的关系。车辆信息表与车牌信息表也是属于一对一的关系。 一对多 即一个表当中的一个字段信息,对应另一张…

【数据库原理及应用】期末复习汇总高校期末真题试卷02

试卷 一、填空题 数据库系统是指计算机系统中引入数据库后的系统,一般由数据库、________、应用系统、数据库管理员和用户构成。当数据库的存储结构发生了改变,由数据库管理员对________映象作相应改变,可以使________保持不变,…

vue快速入门(五十一)历史模式

注释很详细,直接上代码 上一篇 新增内容 历史模式配置方法 默认哈希模式,历史模式与哈希模式在表层的区别是是否有/#/ 其他差异暂不深究 源码 //导入所需模块 import Vue from "vue"; import VueRouter from "vue-router"; import m…

从零开始学AI绘画,万字Stable Diffusion终极教程(一)

【第1期】SD入门 2022年8月,一款叫Stable Diffusion的AI绘画软件开源发布,从此开启了AIGC在图像上的爆火发展时期 率先学会SD的人,已经挖掘出了越来越多AI绘画有趣的玩法 从开始的AI美女、线稿上色、真人漫改、头像壁纸 到后来的AI创意字、AI…

华为eNSP小型园区网络配置(上)

→跟着大佬学习的b站直通车← 目标1:dhcp分配ip地址 目标2:内网用户访问www.yzy.com sw1 # vlan batch 10 # interface Ethernet0/0/1port link-type accessport default vlan 10 # interface Ethernet0/0/2port link-type trunkport trunk allow-pass…

oracle pl/sql 如何让sql windows 显示行号

oracle pl/sql 如何让sql windows 显示行号 下载最新版的pl/sql第一步,在preferences中对sql Windows进行设置,如下所示第二步,在preferences中对User interface进行设置,如下所示结果如下当然,还可以通过右键选择是否…

iptables---防火墙

防火墙介绍 防火墙的作用可以理解为是一堵墙,是一个门,用于保护服务器安全的。 防火墙可以保护服务器的安全,还可以定义各种流量匹配的规则。 防火墙的作用 防火墙具有对服务器很好的保护作用,入侵者必须穿透防火墙的安全防护…

【大模型学习】私有大模型部署(基础知识)

私有大模型 优点 保护内部隐私 缺点 成本昂贵 难以共享 难以更新 大模型底座 基础知识点 知识库 知识库是什么? 知识库的作用是什么? 微调 增强大模型的推理能力 AI Agent 代理,与内部大模型进行交互 开源 and 闭源 是否可以查…

二叉树的实现(详解,数据结构)

目录 一,二叉树需要实现的功能 二,下面是各功能详解 0.思想: 1.创建二叉树结点: 2.通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 3.二叉树销毁: 4.前序遍历: 5.中序遍历:…

QT5之布局操作

目录 实验之前的前提 局部布局和整体布局定义 快捷工具 水平和垂直布局 水平布局 在对象区域可以看出三个已经被水平布局在一起 在对象区域选中布局,点击工具取消当前布局 可以将两个小局部进行大局部布局 网格布局 弹簧布局 分割器布局 器件对齐边距 也…

Java Map集合(一)

1. Map接口 1.1 Map接口概述 Map接口是一种双列集合。Map的每个元素都包含一个键对象Key和一个值对象Value ,键对象和值对象之间存在对应关系,这种关系称为映射(Mapping)。 Map接口中的元素,可以通过 key 找到 value&…

STD10A230XCB电源模块STD05A230XCB整流模块介绍

STD10A230XCB电源模块STD05A230XCB整流模块介绍,直流屏电源模块STD05A230XCB,整流模块STD10A115XCB,STD20A115XCB,STD10A230X,STD05A230X,直流屏充电模块的关键词: 电力智能高频开关充电模块STD20A230XCB,高…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

Golang Colly爬取图片gorm存储数据

语言:Golang 库:Iris/Colly/gorm 运行结果 text/html; charset=utf-8 It is image 20240429222029_0_0.jpg Saved file: images\20240429222029_0_0.jpg text/html; charset=utf-8 It is image 20240429222030_1_0.jpg Saved file: images\20240429222030_1_0.jpg It is ima…

遭遇“U盘只剩USBC乱码”危机?这里有你需要的解决方案!

当你满心期待地将U盘插入电脑&#xff0c;准备读取或传输文件时&#xff0c;突然发现U盘中的文件名全部变成了乱码&#xff0c;尤其是当这些乱码以“USBC”开头时&#xff0c;你可能会感到惊慌失措。这种情况不仅影响你的工作效率&#xff0c;还可能导致重要数据的丢失。那么&a…