- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试计算返回表中的最大值以及该表中的其他值。但是,我这样做的表不是“真正的”表,它是由子查询生成的。这给我带来了问题,因为我不认为我可以在不重新指定整个子查询的情况下加入它两次。
我目前有一个 SQL Server 解决方案,使用 ROW_NUMBER() OVER (PARTITION BY providerId ORDER BY partnershipSetScore DESC) rnk
,但如果可能的话,我正在寻找与 DBMS 无关的版本,因为该项目的单元测试在没有此功能的 Sqlite 数据库中运行。
这是架构和我的 SQL Server 特定查询,以防它们有用:
类(class):
学校:
合作伙伴关系:
学校合作伙伴关系:
这是查询:
SELECT
schoolId,
partnershipId AS bestPartnershipSetId,
partnershipScore AS bestPartnershipScore
FROM
(
SELECT
pp.schoolId,
partnershipScores.partnershipId,
partnershipScores.partnershipScore,
ROW_NUMBER() OVER (PARTITION BY schoolId ORDER BY partnershipScore DESC) rnk
FROM schoolPartnership pp
INNER JOIN (
SELECT
pp.partnershipId,
(
(CASE WHEN SUM(CASE WHEN c.name LIKE '%French%' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END)
+ (CASE WHEN SUM(CASE WHEN c.name LIKE '%History%' THEN 1 ELSE 0 END) > 0 THEN 1 ELSE 0 END)
) AS partnershipScore
FROM schoolPartnership pp
INNER JOIN course c ON c.schoolId = pp.schoolId
GROUP BY partnershipId
) AS partnershipScores ON partnershipScores.partnershipId = pp.partnershipId
) AS schoolPartnershipScores
WHERE rnk = 1
如果您需要有关我正在努力实现的目标的更多信息,请参阅 Custom sorting algorithm for a large amount of data :此查询将是一个较大查询的子查询,该查询按最合适的合作伙伴关系对学校进行排序。
最佳答案
也许,在谈到两次加入子查询时,你的脑海中已经浮现出这样的技巧:
SELECT a.*
FROM atable a
INNER JOIN (
SELECT
col1,
MAX(col2) AS max_col2
FROM atable
GROUP BY col1
) m
ON a.col1 = m.col1 AND a.col2 = m.max_col2
;
作为一种与 DBMS 无关的方式(至少,一种同时在 SQL Server 和 SQLite 中工作的方式)来完成这项工作本来是非常好的如果这是关于单个表的.
相反,您有一个子查询。但是,我看不出有其他方法可以完成您所要求的。因此,在这种情况下,我可以为您看到两个选项(一个可能不适用于您的特定情况,但通常仍然是一个选项):
做您想避免的事情,即专门为查找每个组的聚合值而复制子查询,然后将其连接回同一个子查询,如上所示。
临时保留子查询的结果,然后将上述技术应用于临时结果集。
第一个选项确实不是很有吸引力,更何况第二个选项可能会奏效。
第二个选项的一个问题是临时数据集在 SQL Server 和 SQLite 中的实现方式不同。在 SQLite 中,您为此使用 CREATE TEMPORARY TABLE
语句。 SQL Server 不支持 CREATE TABLE
语句上下文中的 TEMPORARY
关键字,而是在开头使用特殊字符 (#
)表示该表实际上是一个临时表。
因此,我能看到的唯一解决方法是使用普通 表作为临时存储。您可以创建一次,然后在每次运行查询时删除其内容,就在插入临时结果集之前:
DELETE FROM TempTable;
INSERT INTO TempTable (
schoolId,
bestPartnershipSetId,
bestPartnershipScore
)
SELECT
pp.schoolId,
partnershipScores.partnershipId,
partnershipScores.partnershipScore,
FROM
...
;
SELECT ...
FROM TempTable
...
;
或者您可以在每次运行查询时创建和删除它:
CREATE TABLE TempTable (
...
);
INSERT INTO TempTable (...)
SELECT ...
FROM ...
;
SELECT ...
FROM TempTable
...
;
DROP TABLE TempTable;
请注意,像这样使用普通表作为临时存储在 SQL Server 中不是并发友好的。如果这可能会造成问题,您可能不得不放弃此选项并以第一个选项结束。 (但这可能是您想要独立于平台的解决方案时必须支付的成本,尤其是当平台与 SQL Server 和 SQLite 一样不同时。)
关于sql - 子查询上的 Groupwise MAX(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841529/
我有这个 html 代码: HELLO WORLD! X V HELLO WORLD! X V 我想按 X(类关闭)将父 div 的高度更改为 20px 并显示 V(类打开),但在每个 d
在会计应用程序的许多不同实现中,有两种主要的数据库设计方法来保存日志和分类帐数据。 只保留 Journal 信息,然后 Ledger 只是 Journal 的一个 View (因为 journal 总
我想在另一个子里面有一个子, sub a { sub b { } } 我想为每次调用 sub b 创建一个新的 sub a 实例。有没有办法在 Perl 中做到这一点? 当我运行上面的
我有一些代码正在查找重复项并突出显示单元格: Private Sub cmdDups_Click() Dim Rng As Range Dim cel As Range Set Rng = ThisW
可能有一个简单的解决方案,但我很难过。 我有一个包含一个 ID 字段的主表。在两个可能的字段中有一个具有该 ID 的子表。想象一个由选手 A 和选手 B 组成的 double 队。Master 表将有
假设我有一个包含对象的数组: [ { "id": "5a97e047f826a0111b754beb", "name": "Hogwarts", "parentId": "
我正在尝试对 MySQL 数据库表执行一对父/子模型的批量插入,但似乎无法使用标准的 ActiveRecord 功能来完成。所以,我尝试了 activerecord-import gem,但它也不支持
我有一个带有多个子类的父抽象类。最终,我希望通过 GUI 中的进度条显示子类中完成的进度。 我目前所做的,我意识到这是行不通的,是在父类中声明为每个子类将覆盖的虚拟方法的事件方法定义。所以像: pub
是否可以通过键数组在对象中设置变量?例如我有这个对象: var obj = {'outer': {'inner': 'value'} }; 并希望设置由键数组选择的值: var keys = ['ou
我有一个名为 companies 的 MySQL 表,如下所示: +---------+-----------+-----------+ | id_comp | comp_name | id_pare
我正在尝试使用 sublime text 在 sublime text 上的 ionic 上打开我的第一个应用程序。它给了我一个“找不到命令”的错误。如何修复? 我试过这些命令: sudo rm -r
不好意思问,但我正在使用 webapp2,我正在设计一个解决方案,以便更容易定义路由 based on this google webapp2 route function .但这完全取决于能够在子级
我有代表树的数字字符串(我不知道是否有官方名称): 012323301212 上面的例子代表了 2 棵树。根用 0 表示。根的直接子代为“1”,“1”的直接子代为“2”,依此类推。我需要将它们分组到由
是否可以在当前 Activity 之上添加 Activity 。例如,假设我单击一个按钮,然后它将第二个 Activity 添加到当前 Activity 。而第二个 Activity 只覆盖了我当前
我很难思考如何为子资源建模。 以作者的书籍为例。你可以有 N 本书,每本书只有一位作者。 /books GET /books POST /books/id PUT /books/id DELETE 到
有人可以向我解释以下内容(python 2.7) 来自已解析文件的两个字符串数字: '410.9''410.9 '(注意尾随空格) A_LIST = ['410.9 '] '410.9' in '41
背景 在 PowerShell 中构建 hash table 是很常见的通过特定属性快速访问对象,例如以 LastName 为基础建立索引: $List = ConvertFrom-Csv @' I
我真的很难弄清楚如何调用嵌套 Polymer Web 组件的函数。 这是标记: rise-distribution组件有 canPlay我想从 rise-playlist
我写了一个小工具转储(以 dot 格式)一个项目的依赖关系图,其中所有位于同一目录中的文件都聚集在一个集群中。当我尝试生成包含相应图形的 pdf 时,dot开始哭: 命令 dot -Tpdf trim
给定一个 CODE ref,是否可以: 访问该 CODE ref 的解析树 通过指定 CODE ref 的解析树来创建一个新的 CODE ref,该解析树可以包含在 1 中返回的解析树的元素 通常我们
我是一名优秀的程序员,十分优秀!