当前位置: 首页 > news >正文

一个简单的SQL面试题

最近面试遇到一个SQL题,复述如下:

SQL面试题

现在有两张表,结构如下:
学生表(student)

学号sid姓名name
1张三
2李四
3王五

成绩表(score)

序号id学号sid科目subject分数score
11语文80
21数学90
32语文85
42数学100
53语文70
63数学60
  1. 写一个SQL,查出每个人的总分,并按倒序排列。输出字段如下:
姓名总分
  1. 最近学校要举行乒乓球运动会,准备采用循环赛,即每个人都与其他人都要比赛。写一个SQL列出每一场比赛的参赛人员,按顺序输出。
A组B组

解答

  1. 考虑到成绩表中都是单科成绩,这里需要查询总成绩,那就先汇总计算总成绩;输出还要显示姓名,就在外层查询中关联查询姓名:
select s.name as '姓名', total as '总分' from student s left join (select sid, sum(score) as total from score group by sid
) t on s.id = t.sid order by total desc;

还可以直接关联查询:

select name as '姓名', sum(`score`) as '总分' from student u, `score` s 
where u.id = s.sid group by s.sid order by sum(score) desc;

输出结果:

+----+-----+
|name|total|
+----+-----+
|李四  |  185|
|张三  |  170|
|赵六  |  138|
|王五  |  130|
+----+-----+
  1. 既然要输出全部循环数据,那可以考虑使用join
select a.name as 'A组', b.name as 'B组' from student a join student b on a.id!=b.id;

输出结果:

+----+-----+
|A组|B组|
+----+-----+
|赵六  |张三  |
|王五  |张三  |
|李四  |张三  |
|赵六  |李四  |
|王五  |李四  |
|张三  |李四  |
|赵六  |王五  |
|李四  |王五  |
|张三  |王五  |
|王五  |赵六  |
|李四  |赵六  |
|张三  |赵六  |
+----+-----+

注意,上述输出中包含两条张三和李四的记录,即每个人作为A组比赛一次,作为B组再比赛一次。如果两个人只比赛一次,可以考虑利用id大小进行去重。

select a.name as 'A组', b.name as 'B组' from student a join student b on a.id<b.id;

输出结果:

+----+-----+
|A组|B组|
+----+-----+
|张三|李四|
|张三|王五|
|张三|赵六|
|李四|王五|
|李四|赵六|
|王五|赵六|
+----+-----+

平时使用join写SQL时一般使用的等值连接,即在on后面紧跟着表的主键等于另一个表的某一列,很少使用不等于或其他比较操作符判断。在语法上,可以使用等值连接以外的方式,这种类型的连接被称为非等值连接或范围连接。但在实际应用中,使用非等值连接可能会导致较大的中间结果集,特别是在数据量大的情况下,这可能会影响查询性能。故不推荐使用!!!

相关文章:

一个简单的SQL面试题

最近面试遇到一个SQL题&#xff0c;复述如下&#xff1a; SQL面试题 现在有两张表&#xff0c;结构如下&#xff1a; 学生表&#xff08;student&#xff09; 学号sid姓名name1张三2李四3王五 成绩表&#xff08;score&#xff09; 序号id学号sid科目subject分数score11语…...

网站服务器在不同操作系统上监听端口情况的方法

网站服务器监听端口的情况通常需要通过一些命令行工具来进行检查&#xff0c;这样可以查看哪些进程在监听特定的端口&#xff0c;以及它们的状态。以下是在不同操作系统上可以使用的几种方法&#xff1a; Windows系统 1. 使用netstat命令 打开命令提示符(cmd)&#xff0c;然后输…...

RabbitMQ篇(基本介绍)

目录 一、MQ 1. 什么是MQ 2. 为什么要用MQ【业务场景】 2.1. 异步 2.2. 应用解耦 2.3. 流量削峰 3. MQ的分类 &#xff08;1&#xff09;ActiveMQ &#xff08;2&#xff09;Kafka &#xff08;3&#xff09;RocketMQ &#xff08;4&#xff09;RabbitMQ 4. MQ 的选…...

浅谈网络通信中的透传和非透传

在网络通信中&#xff0c;透传&#xff08;Transparent Transmission&#xff09;和非透传&#xff08;Non-Transparent Transmission&#xff09;是两种不同的数据传输模式&#xff0c;尤其在使用ESP8266这类WiFi模块时&#xff0c;这两种模式有其特定的应用场景&#xff1a; …...

影视cms泛目录用什么程序?苹果cms二次开发泛目录插件

影视CMS泛目录一般使用的程序有很多种&#xff0c;&#xff08;maccmscn&#xff09;以下是其中几种常见的程序&#xff1a; WordPress&#xff1a;WordPress是一个非常流行的开源内容管理系统&#xff0c;可以通过安装一些插件来实现影视CMS泛目录功能。其中&#xff0c;一款常…...

IP6537_C_30W20V--移动设备快充的得力助手,集成 14 种快充协议的降压 SoC

IP6537_C_30W20V是一款集成同步开关的降压转换器、支 持 14 种输出快充协议、支持 Type-C 输出和 USB PD2.0/PD3.0(PPS)协议的 SoC&#xff0c;为车载充电器、 快充适配器、智能排插提供完整的解决方案。 IP6537_C_30W20V支持 USB Type-C 或者 USB A 输出&#xff0c; 5V 输出功…...

【hot100-java】【寻找两个正序数组的中位数】

二分查找篇 如果使用之前的两个指针分别遍历再合并的话就已经超过时间复杂度了。。 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int mnums1.length;int nnums2.length;if(m>n){return findMedianSortedArrays(nums2,nums1);}int tot…...

C++七种异常处理

在C++中,使用异常机制可以提高程序的健壮性和可维护性。异常是在程序运行时发生的一个事件,它会打断正在执行的程序的正常流程。C++异常处理机制可以使程序在出现异常时,进行异常处理,而不是退出程序。 基本的异常处理 #include <iostream> using namespace std;int …...

【C语言系统编程】【第三部分:网络编程】3.3 实践与案例分析

3.3 实践与案例分析 在本章节中&#xff0c;我们将通过一些具体的案例来展示如何在实际项目中进行网络编程。这些案例不仅能帮助你理解各个概念&#xff0c;还能提升你的实践技能&#xff0c;并为你将来的项目提供参考。 3.3.1 案例分析&#xff1a;简单的聊天室 聊天室是网…...

Unity3D播放GIF图片 插件播放

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果图👉二、使用方法1.代码如下👉三、壁纸分享👉总结👉前言 unity播放gif图片,本身是不支持的,但是可以使用其他方法来实现,有一种使用System.Drawing来实现播放的,一种是让UI把图片导出成帧动画图片,…...

基于STM32的远程工业控制系统架构设计:MQTT通信、React界面与FreeRTOS优化的综合应用

一、项目概述 项目目标和用途 本项目旨在开发一个基于STM32单片机的远程工业控制系统。该系统能够通过互联网监控和控制工业设备&#xff0c;实时采集环境和设备状态数据&#xff0c;并将数据上传至云端以便进行数据分析和可视化。用户可以通过移动应用或网页界面远程操作设备…...

墙绘艺术在线交易平台:SpringBoot技术详解

4 系统设计 墙绘产品展示交易平台的设计方案比如功能框架的设计&#xff0c;比如数据库的设计的好坏也就决定了该系统在开发层面是否高效&#xff0c;以及在系统维护层面是否容易维护和升级&#xff0c;因为在系统实现阶段是需要考虑用户的所有需求&#xff0c;要是在设计阶段没…...

VMware中Ubuntu系统Docker正常运行但网络不通(已解决)

问题描述&#xff1a;在VMware中的Ubuntu系统下部署了Docker&#xff0c;当在docker容器中运行Eureka微服务时&#xff0c;发现Eureka启动正常&#xff0c;但无法通过网页访问该容器中Eureka。 解决办法如下&#xff1a; 1、创建桥接网络&#xff1a;test-net sudo docker n…...

【web安全】——文件包含漏洞

1. 文件包含基础 和SQL注入等攻击方式一样&#xff0c;文件包含漏洞也是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行。 1.1. 文件包含简介 什么叫包含呢&#xff1f;以PHP为例&#xff0c;我们常常把可重复使用的函…...

游戏如何对抗改包

游戏改包是指通过逆向分析手段及修改工具&#xff0c;来篡改游戏包内正常的设定和规则的行为&#xff0c;游戏包被篡改后&#xff0c;会被植入/剔除模块进行重打包。 本期图文我们将通过实际案例分析游戏改包的原理&#xff0c;并分享游戏如何应对改包问题。 安卓平台常见的改…...

12.梯度下降法的具体解析——举足轻重的模型优化算法

引言 梯度下降法(Gradient Descent)是一种广泛应用于机器学习领域的基本优化算法&#xff0c;它通过迭代地调整模型参数&#xff0c;最小化损失函数以求得到模型最优解。 通过阅读本篇博客&#xff0c;你可以&#xff1a; 1.知晓梯度下降法的具体流程 2.掌握不同梯度下降法…...

GPT对话知识库——C、C++,还有Java,他们之间有什么区别

目录 1&#xff0c;问&#xff1a; 1&#xff0c;答&#xff1a; 1. 语言特性与设计理念 C 语言&#xff1a; C 语言&#xff1a; Java 语言&#xff1a; 2. 内存管理 3. 运行效率 C 和 C&#xff1a; Java&#xff1a; 4. 程序的执行方式 C 和 C&#xff1a; Jav…...

华为GaussDB数据库之Yukon安装与使用

一、Yukon简介 Yukon&#xff08;禹贡&#xff09;&#xff0c;基于openGauss、PostgreSQL、GaussDB数据库扩展地理空间数据的存储和管理能力&#xff0c;提供专业的GIS&#xff08;Geographic Information System&#xff09;功能&#xff0c;赋能传统关系型数据库。 Yukon 支…...

Linux命令:用于显示 Linux 发行版信息的命令行工具lsb_release详解

目录 一、概述 二、用法 1、基本用法 2、选项 3、获取帮助 三、示例 1. 显示所有信息 2. 只显示发行版名称 3. 只显示发行版版本号 4. 只显示发行版代号 5. 只显示发行版描述 6. 只显示值&#xff0c;不显示标签 四、使用场景 1、自动化脚本 2、诊断问题 3、环…...

sbb-classes 元素

sbb-classes 元素 在 JAIN SLEE&#xff08;服务级别事件扩展&#xff09;中&#xff0c;sbb-classes 元素用于定义服务边界组件&#xff08;SBB&#xff09;的类结构及其相关配置。这是每个 SBB 的必备部分&#xff0c;包含多个子元素&#xff0c;负责描述 SBB 的抽象类、接口…...

(作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第3关Git 基础知识

任务编号 任务名称 任务描述 1 破冰活动 提交一份自我介绍。 2 实践项目 创建并提交一个项目。 破冰活动 提交一份自我介绍。 每位参与者提交一份自我介绍。 提交地址&#xff1a;https://github.com/InternLM/Tutorial 的 camp3 分支&#xff5e; 安装并设置git 克隆仓库并…...

12.数据结构和算法-栈和队列的定义和特点

栈和队列的定义和特点 栈的应用 队列的常见应用 栈的定义和特点 栈的相关概念 栈的示意图 栈与一般线性表有什么不同 队列的定义和特点 队列的相关概念...

15分钟学 Python 第34天 :小项目-个人博客网站

Day 34: 小项目-个人博客网站 1. 引言 随着互联网的普及&#xff0c;个人博客已成为分享知识、体验和见解的一个重要平台。在这一节中&#xff0c;我们将使用Python的Flask框架构建一个简单的个人博客网站。我们将通过实际的项目来学习如何搭建Web应用、处理用户输入以及管理…...

从零开始实现RPC框架---------项目介绍及环境准备

一&#xff0c;介绍 RPC&#xff08;Remote Procedure Call&#xff09;远程过程调⽤&#xff0c;是⼀种通过⽹络从远程计算机上请求服务&#xff0c;⽽不需要 了解底层⽹络通信细节。RPC可以使⽤多种⽹络协议进⾏通信&#xff0c; 如HTTP、TCP、UDP等&#xff0c; 并且在 TCP/…...

论文阅读:PET/CT Cross-modal medical image fusion of lung tumors based on DCIF-GAN

摘要 背景&#xff1a; 基于GAN的融合方法存在训练不稳定&#xff0c;提取图像的局部和全局上下文语义信息能力不足&#xff0c;交互融合程度不够等问题 贡献&#xff1a; 提出双耦合交互式融合GAN&#xff08;Dual-Coupled Interactive Fusion GAN&#xff0c;DCIF-GAN&…...

java基础 day1

学习视频链接 人机交互的小故事 微软和乔布斯借鉴了施乐实现了如今的图形化界面 图形化界面对于用户来说&#xff0c;操作更加容易上手&#xff0c;但是也存在一些问题。使用图形化界面需要加载许多图片&#xff0c;所以消耗内存&#xff1b;此外运行的速度没有命令行快 Wi…...

cpp,git,unity学习

c#中的? 1. 空值类型&#xff08;Nullable Types&#xff09; ? 可以用于值类型&#xff08;例如 int、bool 等&#xff09;&#xff0c;使它们可以接受 null。通常&#xff0c;值类型不能为 null&#xff0c;但是通过 ? 可以表示它们是可空的。 int? number null; // …...

HTML增加文本复制模块(使用户快速复制内容到剪贴板)

增加复制模块主要是为了方便用户快速复制内容到剪贴板&#xff0c;通常在需要提供文本信息可以便捷复制的网页设计或应用程序中常见。以下是为文本内容添加复制按钮的一个简单实现步骤&#xff1a; HTML结构&#xff1a; 在文本旁边添加一个复制按钮&#xff0c;例如 <butto…...

Spring Cloud面试题收集

Spring Cloud Spring cloud 是一系列框架的有序集合。它利用 spring boot 的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用 spring boot 的开发风格做到一键启动和部署。…...

观测云对接 SkyWalking 最佳实践

简介 SkyWalking 是一个开源的 APM&#xff08;应用性能监控&#xff09;和可观测性分析平台&#xff0c;专为微服务、云原生架构和基于容器的架构设计。它提供了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化的解决方案。如果您的应用中正在使用SkyWalking &#xf…...

2017做那些网站致富/临沂seo推广外包

E. Permutation Shift&#xff08;思维题&#xff09; 长为n的排列&#xff0c;初始为1 2 3 ... n&#xff0c; 你可以初始右移k步&#xff0c;比如右移一步的序列就是2 3 ... n 1&#xff0c; 你有m(0<m<n/3)次交换机会&#xff0c;每次可以交换两个任意位置&#x…...

wordpress怎么设置邮箱/合肥seo网站管理

数学实验报告专业&#xff1a;班级&#xff1a;学号&#xff1a;姓名&#xff1a;一. 实验题目1. 用MATLAB编程求极限&#xff1a;⑴lim n →∞2. 用MATLAB 编程求解方程&#xff1a;⑵e x -3x 0在[-1,1]上的近似解&#xff1b;3. 用MATLAB 编程求函数的导数&#xff1a;⑴设y …...

衡阳网站制作公司/bt鹦鹉磁力

考试安排 7:30~7:40 先看了一遍题&#xff0c;发现有做过的原题 7:40~8:00 T2直接莫反一下就可以做到O(nn)O(n\sqrt n)O(nn​)&#xff0c;于是赶紧写&#xff0c;写完感觉没问题 8:00~8:20 T3没什么思路&#xff0c;先写了一个暴力的状压 8:30~9:00 突然想到可以容斥&…...

wordpress 微信 支付宝/推广平台有哪些

原标题&#xff1a;盖茨承认“ControlAltDelete”命令是个错误 北京时间9月26日晚间消息&#xff0c;微软董事长比尔盖茨(Bill Gates)上周在参加哈佛大学一次筹款活动时承认&#xff0c;用于登录Windows系统的“ControlAltDelete”命令是一个错误。 这一命令最初被设计用于重…...

网络广告文案/做网站排名优化的公司

摘要&#xff1a;植被BRDF模型的研究是支撑多角度植被遥感技术的理论基础,它的发展大大地推动了再生资源定量遥感的进程.因此,植被BRDF模型研究已经成为当前遥感科学中一个十分活跃的领域,先后出现的辐射传输模型,几何光学模型,混合模型和计算机模拟模型被用来定量计算地面目标…...

wordpress 分类目录导航/百度快照优化seo

基本的 IO 接口 io 包为 I/O 原语提供了基本的接口。它主要包装了这些原语的已有实现。 由于这些接口和原语以不同的实现包装了低级操作&#xff0c;因此除非另行通知&#xff0c;否则客户端不应假定它们对于并行执行是安全的。 在 io 包中最重要的是两个接口&#xff1a;Reade…...