当前位置: 首页 > 面试题库 >

SQL-将查询结果用作一条语句中其他两个查询的基础

贝德辉
2023-03-14
问题内容

我正在做一个概率计算。我有一个查询来计算事件发生的总数。从这些事件中,我想获得子事件发生的次数。查询以获取事件总数为25行,我不想复制并粘贴两次。

我想对该查询做两件事:计算其中的行数,并计算此查询的查询结果中的行数。现在,我能想到的唯一方法是(用复杂的查询替换@ total
@来获取所有行,并用不那么复杂的条件替换@ conditions @,而来自@ total @的行必须匹配子事件):

SELECT (SELECT COUNT(*) FROM (@total@) AS t1 WHERE @conditions@) AS suboccurs, 
       COUNT(*) AS totaloccurs FROM (@total@) as t2

如您所见,@ total @重复两次。有没有办法解决?有没有更好的方法来做我想做的事情?

要再次强调:@ conditions @确实取决于@ total @的返回值(它确实类似于t1.foo = bar)。

最后一些注意事项:@ total
@本身需要〜250ms。这个更复杂的查询需要300毫秒左右的时间,因此postgres可能会自己进行一些优化。仍然,查询看起来非常丑陋,@ total
@确实被粘贴了两次。


问题答案:
SELECT COUNT(*) as totaloccurs, COUNT(@conditions@) as suboccurs
FROM (@total@ as t1)


 类似资料:
  • 我的SQL有这些表: ___BookingsDatas ___预订 _ _ _客户 我想链接这些表,所以我有这个查询: 它实际上起作用了。 问题是在第二个表上,我有一些信息需要与第三个表链接。 例如,我需要有以下结果: 那么,在这种情况下,如何在另一个where语句中使用第一个mysql查询的结果? 谢谢。

  • 问题内容: 我有一个查询。现在,此查询当然返回一个结果集,我想要的是查询此查询的结果集,例如,我只希望上述查询具有唯一的名称。我应该提一下,我知道我可以在Query1中使用,但这只是一个示例,我的实际情况有些不同,我想知道的是是否可以查询上一个查询的结果集。我正在使用SQL Server 2012。 问题答案: 您可以使用该子句

  • 问题内容: 我非常确定我们不能将LIMIT子句用于我想做的事情-因此想确定是否还有其他方法可以实现此目的。 我有一个表,其中捕获了哪个用户访问了哪个商店。每次用户访问商店时,都会在此表中插入一行。 一些领域是 shopping_id(primary key) store_id user_id 现在,我想要的是-对于给定的一组商店,找到访问该商店的最大次数的前5位用户。 我可以一次在1个商店中进行以

  • 问题内容: 我有两个不同的表,在这些表上我应用了带有一些过滤器和汇总函数(如SUM,COUNT,SUBSTR)的选择查询。 我想在单个结果中获得这两个不同的输出。 查询1: 查询2: 我已经尝试过,而且都尝试过。但是那些没有用。我也尝试过,但是也没有用。请给我建议一些解决方案,在这种情况下会有所帮助。谢谢。 问题答案: 有两种将查询放在一起的方法:通过使用联接进行侧向查询,并通过联合在彼此之上进行

  • 问题内容: 查询1: 查询2: 我想将两个结果合并为两列,其中缺少一列=查询2-查询1以加快处理速度。我该怎么做?示例: 我有两个结果: // ----------------------------------------查询:1 1 2 3 4 // --------------------------------------查询:2 4 5 6 8 // ------------------

  • 我有两个表TABLE_A,列名为COLUMN1 COLUMN2 COLUMN3 COLUMN 4 COLUM5 abc def ghi jkl mno 123 456 789 001 121 TABLE_B列名为COLUMN6 COLUMN7,其数据为 专栏5 124 第4列bca 第3列aaa 列5 BBB 所以我将Table_A的列名作为Table_B中的数据 所以我想在一个查询中做这样的事情