如何解决SQL-将查询结果用作一条语句中其他两个查询的基础
SELECT COUNT(*) as totaloccurs, COUNT(@conditions@) as suboccurs
FROM (@total@ as t1)
解决方法
我正在做一个概率计算。我有一个查询来计算事件发生的总数。从这些事件中,我想获得子事件发生的次数。查询以获取事件总数为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
@确实被粘贴了两次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。