SQL - 查找只喜欢同一年级学生的学生的年级

2024-02-12

我正在做一门免费的斯坦福在线课程(这很酷,你应该看看),在过去的两天里我一直在绞尽脑汁,但找不到以下问题的答案。请帮忙。

问题4 查找只有同年级朋友的学生的姓名和成绩。返回按年级排序的结果,然后按每个年级中的名称排序。

当我最终认为我得到了答案时,我的查询返回了 Friend 表中的所有值。

这是我能想到的最好的办法。

select h1.id, h1.name, h1.grade, h2.id, h2.name, h2.grade
from friend f1
join highschooler h1 on f1.id1 = h1.id
join highschooler h2 on f1.id2 = h2.id
where h1.grade = any (select h3.grade from friend f2
                    join highschooler h3 on f2.id1 = h3.id
                    where h3.id = f1.id1)

我需要在 SQLite 中运行查询。 我在用着http://sqlfiddle.com http://sqlfiddle.com在 SQLite 中测试我的查询,这是我正在使用的示例数据。

/* Create the schema for our tables */
create table Highschooler(ID int, name text, grade int);
create table Friend(ID1 int, ID2 int);
create table Likes(ID1 int, ID2 int);

/* Populate the tables with our data */
insert into Highschooler values (1510, 'Jordan', 9);
insert into Highschooler values (1689, 'Gabriel', 9);
insert into Highschooler values (1381, 'Tiffany', 9);
insert into Highschooler values (1709, 'Cassandra', 9);
insert into Highschooler values (1101, 'Haley', 10);
insert into Highschooler values (1782, 'Andrew', 10);
insert into Highschooler values (1468, 'Kris', 10);
insert into Highschooler values (1641, 'Brittany', 10);
insert into Highschooler values (1247, 'Alexis', 11);
insert into Highschooler values (1316, 'Austin', 11);
insert into Highschooler values (1911, 'Gabriel', 11);
insert into Highschooler values (1501, 'Jessica', 11);
insert into Highschooler values (1304, 'Jordan', 12);
insert into Highschooler values (1025, 'John', 12);
insert into Highschooler values (1934, 'Kyle', 12);
insert into Highschooler values (1661, 'Logan', 12);

insert into Friend values (1510, 1381);
insert into Friend values (1510, 1689);
insert into Friend values (1689, 1709);
insert into Friend values (1381, 1247);
insert into Friend values (1709, 1247);
insert into Friend values (1689, 1782);
insert into Friend values (1782, 1468);
insert into Friend values (1782, 1316);
insert into Friend values (1782, 1304);
insert into Friend values (1468, 1101);
insert into Friend values (1468, 1641);
insert into Friend values (1101, 1641);
insert into Friend values (1247, 1911);
insert into Friend values (1247, 1501);
insert into Friend values (1911, 1501);
insert into Friend values (1501, 1934);
insert into Friend values (1316, 1934);
insert into Friend values (1934, 1304);
insert into Friend values (1304, 1661);
insert into Friend values (1661, 1025);
insert into Friend select ID2, ID1 from Friend;

insert into Likes values(1689, 1709);
insert into Likes values(1709, 1689);
insert into Likes values(1782, 1709);
insert into Likes values(1911, 1247);
insert into Likes values(1247, 1468);
insert into Likes values(1641, 1468);
insert into Likes values(1316, 1304);
insert into Likes values(1501, 1934);
insert into Likes values(1934, 1501);
insert into Likes values(1025, 1101);

先感谢您。

Regards.

Cesar


那么我们想要找到其他年级没有学生有友谊关系的学生,对吗?这是表达这一点的一种方式:

select * from highschooler h
where not exists
(select 1 from highschooler h2 where h2.grade != h.grade and exists
(select 1 from friends f where (f.id1 = h.id or f.id2 = h.id) and (f.id1 = h2.id or f.id2 = h2.id)))
order by grade, name

编辑:如果您还要求他们至少有一个朋友,您也需要检查这一点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL - 查找只喜欢同一年级学生的学生的年级 的相关文章

  • 如何插入显式值和从另一个表检索的数据的混合

    我知道两种将数据插入表的方法 方法1 显式值 INSERT INTO table field1 field2 field3 VALUES value1 value2 value3 方法2 从另一个表复制数据 INSERT INTO tabl
  • 在 SQL 存储过程中选择并合并表中的行

    有一个具有架构的临时表 ID 序列号 姓名 ID 不唯一SeqNo 整数 可以是 1 2 或 3 以ID SeqNo作为主键排序名称 任何文本 表中的示例数据如下 1 1 RecordA 2 1 RecordB 3 1 RecordC 1
  • 在嵌套有序字典 python 中查找给定键的值

    我试图从嵌套的 OrderedDict 中查找给定键的值 关键点 我不知道这个字典会嵌套多深 我正在寻找的键的名称是不变的 它将位于字典中的某个位置 我想返回本例中名为 powerpoint color 的键的值 mydict Ordere
  • 如何向多个涉及外键依赖的表插入数据(MySQL)

    我正在寻找将数据插入多个 MySQL 表的最佳实践方法 其中某些列是外键依赖项 这是一个例子 Table contacts contact id first name last name prof id zip code 联系人 表有主键
  • 消息传递功能创建 Sql 查询和数据库视图

    鉴于以下情况 我需要能够获取给定用户参与的所有线程的列表 首先按最新消息排序 仅显示最新消息 每个线程 1 条消息 这是上面的 SQL 查询 SELECT Message MessageId Message CreateDate Messa
  • 如何使用 JDBC 执行过程

    这是我的功能 public static void execute delete on db String pass String login String port String host String table name String
  • 如何从函数依赖中获取最小密钥?

    我需要一些帮助和指导 我有以下关系 R A B C D E F 以及函数依赖集 F AB gt C A gt D D gt AE E gt F R 的主键是什么 如果我应用推理规则 我会得到这些额外的函数依赖项 D gt A D gt E
  • 如何在没有 RawSQL 的情况下在 Django 中创建和访问正则表达式捕获组?

    如何在不使用 RawSQL 的情况下使用 Regex 捕获组注释 Django 查询集 以便稍后可以使用该值进行过滤和排序 例如 在 PostgreSQL 中我可以进行以下查询 CREATE TABLE foo id varchar 100
  • Oracle 10 中的本地临时表(适用于存储过程的范围)

    我是甲骨文新手 我需要在存储过程中处理大量数据 我正在考虑使用临时表 我正在使用连接池 并且该应用程序是多线程的 有没有一种方法可以为每次调用存储过程创建不同的表实例来创建临时表 以便来自多个存储过程调用的数据不会混淆 你说你是 Oracl
  • Oracle 求两个时间戳的平均值

    我不明白这有多难 但我似乎无法在任何地方找到解决方案 它是针对日期完成的 但我看不到让它适用于时间戳 我正在尝试做 select avg last timestmp ref timestmp as average from param 它一
  • 匹配 MySQL 中单词/后缀的相似/变体

    我如何匹配 MySQL 中单词的变体 例如搜索 accountancy 应匹配 accountant accountants accounting 等 我使用共享主机 因此无法向 MySQL 添加任何功能 例如 levenshtein 我想
  • 如何选择非“唯一”行

    我有下表 我必须从中获取非唯一行 id idA infos 0 201 1899 1 205 1955 2 207 1955 3 201 1959 我想获取该列的所有行infos 具有相同的idA至少有两行的值 上表的查询输出必须是 inf
  • Oracle - 为什么在存储过程中允许 EXECUTE IMMEDIATE?

    如果存储过程旨在减轻 SQL 注入攻击 为什么在存储过程中允许 EXECUTE IMMEDIATE 以下问题的公认答案将其视为针对此类攻击的一个步骤 什么是存储过程 https stackoverflow com a 459531 3163
  • 我可以计算 SQL Server 中两个日期之间有多少个周末吗?

    我正在计算为一份报告租用设备的收入 其中 周末的招聘成本会比平日增加10 那么我如何计算两个日期之间有多少个周末呢 在报告查询中 我也不能使用DECLARE 有人可以帮我做到这一点吗 太感谢了 这应该有效 DECLARE StartDate
  • 物化视图与表:有什么优点?

    我很清楚为什么物化视图比仅查询基表更可取 不太清楚的是与仅创建另一个具有与 MV 相同数据的表相比的优势 MV 的唯一优势真的只是易于创建 维护吗 MV 不是相当于具有匹配架构的表和使用 MV SELECT 语句的 INSERT INTO
  • 使用一条语句在 MySQL 中添加多列

    我试图将多个列添加到 phpMyAdmin 中的现有表中 但我不断收到相同的错误 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法 我在写信 ALTER TABLE WeatherCente
  • UNION ALL mysql 子句中的行默认顺序?..我的意思是,首先提取哪一行?

    例如 如果我有一个真正简单的查询 选择1 联合所有 选择2 然后通过 Perl 或 PHP 获取行 我会将 1 作为第一行 将 2 作为第二行吗 这种行为在任何地方都有描述吗 Thanx 没有默认顺序 无论是在表中还是在查询中 除非您使用
  • Oracle:在更新具有多列的表的一个字段时复制行

    有没有一种方法可以一般复制一行 特别是在不指定所有列的情况下 在我的情况下 我有一个大表 我想在其中复制除 ID 和另一列之外的所有列 事实上 数据是在年初复制的 该表有 50 多列 因此如果我不必指定所有列 则更改架构会更加灵活和稳健 这
  • SQLPLUS 保存到文件

    我必须为我的数据库类使用 SQLPLUS 我们的第一个作业是简单的保存 我按照说明进行操作 我正在使用 PuTTY 访问 sqlplus 在本练习中使用以下 SQL 命令 并尝试使用 SAVE 和 SPOOL 命令将 SQL 命令和输出保存
  • Oracle SQL:从表中选择数据和分区名称并截断分区

    这是一个由两部分组成的问题 1 是否可以根据数据所在的分区使用 select 语句检索其名称ROWID或者其他一些标识符 eg SELECT DATA ID CATEGORY VALUE PARTITION NAME FROM MYTABL

随机推荐

  • 有什么理由避免 return 语句

    有时我会看到大段的 Scala 代码 其中包含多个嵌套级别的条件和匹配 使用显式 return 退出函数会更加清晰 避免那些显式的 return 语句有什么好处吗 A return may be通过抛出异常来实现 所以它may have与声
  • 我需要帮助设置 .NET HttpWebRequest 超时

    我的目标是在最短的时间内从多达 6000 个 URL 中获得答案 它运行得非常好 5200 个 LAN 地址需要 12 秒 直到开始出现一些延迟 我的代码最多同时使用 20 个 HttpWebRequest BeginGetResponse
  • 如何使用 R 找到最适合的圆/椭圆?

    我一直在阅读一些将圆适合数据的方法 例如this http www cs bsu edu homepages kerryj kjones circles pdf 我想看看这些方法如何在真实数据上发挥作用 并考虑使用 R 来实现这一点 我尝试
  • 为什么我的文本文件不断覆盖其中的数据?

    我试图从产品的 Facebook 页面中提取一些数据并将其全部转储到文本文件中 但我发现该文件不断用数据覆盖自身 我不确定这是分页问题还是我必须制作多个文件 这是我的代码 Modules import requests import fac
  • 不同图像方向和纵横比的 CollectionView 布局?

    我想知道我们如何使用 CollectionView 来显示不同尺寸 长宽比和方向的图像 有没有办法在这些图像中找到 匹配 看一下 DeviantArt iOS 应用程序的屏幕截图 您可能已经注意到 具有相同高度并且可以安装在屏幕中的图像位于
  • 如何获取给定月份的每个星期一?

    如何获取给定月份的每个 星期一 一个例子 输入 2017 年 7 月 11 日 11 07 2017 输出 3 10 17 24 31 2017年7月3日 星期一2017年7月10日 星期一2017年7月17日 星期一2017年7月24日
  • 读取无符号整数时如何将负数检测为解析错误?

    我想从 C iostream 中读取以 10 为基数 十进制 表示的无符号整数 并至少进行基本的错误检测 在我看来 在这种情况下 减号显然是一个错误 因为无符号整数没有符号 然而 gcc却有不同的看法 include
  • 避免节流 dynamoDB

    我是云计算的新手 但有一个问题 我将要描述的机制是否存在或可以创建 Dynamodb 已配置吞吐量 例如 100 次写入 秒 当然 在现实世界的应用程序中 实际吞吐量是非常动态的 几乎永远不会是您配置的 100 次写入 秒 我在想 dyna
  • 将 MS-Access 数据库转换为 SQL 脚本的工具

    我们的软件包使用MS Access数据库 这个数据库已经修改了很多次 所以 光看文件有点复杂 表之间的关系很小 无论如何 有没有一种方法或程序可以将此 mdb 文件转换为 SQL 脚本 目前任何类型的 SQL 脚本都可以执行此操作 Than
  • 找不到适用于 GeoJsonPoint 类型的构造函数

    很难弄清楚我做错了什么 遗憾的是我曾经让它工作过 但无法确定我改变了什么破坏了它 据我了解 现在应该完全支持 有问题的对象 Document public class Place public final static String URI
  • C代码模块化有哪些方法?

    随着项目规模的扩大 您知道哪些方法 实践和约定可以模块化 C 代码 创建仅包含使用模块所需内容的头文件 在相应的 c 文件中 将任何不应该在外部可见的内容 例如辅助函数 设为静态 对外部可见的所有内容的名称使用前缀有助于避免命名空间冲突 如
  • 训练CNN时如何去除重复项?

    我正在使用 CNN 解决图像分类问题 我有一个包含重复图像的图像数据集 当我用这些数据训练 CNN 时 它出现了过拟合 因此 我需要删除那些重复项 我们粗略地称为重复的东西对于算法来说可能很难辨别 您的重复项可以是 精确重复 近乎精确的重复
  • 动态触发 HTML5 缓存清单文件?

    我正在使用 HTML5 的新缓存清单功能来缓存我的 Web 应用程序 以便它可以离线工作 当页面加载以下 html 元素时 内容会自动缓存 这很好用 但是 我想让我的用户可以选择是否要离线缓存内容 所以 这是我的问题 有没有什么方法可以使用
  • Rails - 从模型生成迁移脚本

    我正在学习 Rails 并且遇到了 Migrations 似乎每次我想要编辑模型时 我都需要添加迁移脚本 即使我尚未投入生产 您可以编辑模型 添加所需的所有属性 并在发布之前自动生成迁移脚本吗 Thanks 如果您使用的是 Rails 3
  • 如何在 FOSUserBundle 中为控制器重置设置 sender_name?

    我想更改名称sender name期间的电子邮件重置 我已经这样做了登记并取得了成功 这可以通过定义轻松完成fos user registration confirmation from email sender name 现在 我想为重置
  • 查询语言:参考查询请求

    跟着教程 有一个查询 query selectCommoditiesByOwner description Select all commodities based on their owner statement SELECT org a
  • 在 Ruby 中生成独立的线程或进程

    我可能会朝错误的方向接近这个问题 所以任何帮助将不胜感激 我有一个 Ruby 脚本 除其他外 它还启动一个可执行文件 我想启动这个可执行文件 当前正在使用系统 触发 然后继续执行脚本 当脚本完成时 我希望它退出但保持可执行文件运行 最初我有
  • 将一种模型转换为另一种模型的设计模式

    基本上 我的应用程序中有许多对象 我必须在发送请求之前将它们转换为另一个第三方对象 收到响应后 我必须将这些对象转换回我的应用程序支持的对象 在 Java 中 我可以使用什么模式将一个模型对象转换为另一个模型对象 我不认为有一个特定的模式
  • 如何从单个项目列表中删除未命名的元素?

    这听起来可能是一个非常初学者的问题 而且也可能是一个非常基本和愚蠢的问题 但不知怎的 我在做这件事时感到头疼 假设我有一个项目列表 v lt as list 1 2 3 v 1 1 1 2 3 现在我想将其所有项目拆分为单独的项目 v2 l
  • SQL - 查找只喜欢同一年级学生的学生的年级

    我正在做一门免费的斯坦福在线课程 这很酷 你应该看看 在过去的两天里我一直在绞尽脑汁 但找不到以下问题的答案 请帮忙 问题4 查找只有同年级朋友的学生的姓名和成绩 返回按年级排序的结果 然后按每个年级中的名称排序 当我最终认为我得到了答案时