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

Postgres如何实现带子句的计算列

毛声
2023-03-14
问题内容

我需要按postgres中的计算列进行过滤。使用MySQL很容易,但是如何使用Postgres SQL实施呢?

伪代码:

select id, (cos(id) + cos(id)) as op from myTable WHERE op > 1;

有SQL技巧吗?


问题答案:

如果不想重复该表达式,则可以使用派生表:

select *
from (
   select id, cos(id) + cos(id) as op 
   from myTable 
) as t 
WHERE op > 1;

这不会对性能产生任何影响,仅是SQL标准所需的语法糖。

或者,您可以将以上内容重写为公用表表达式:

with t as (
  select id, cos(id) + cos(id) as op 
  from myTable 
)
select *
from t 
where op > 1;

您更喜欢哪一个在很大程度上取决于品味。CTE的优化方式与派生表相同,因此第一个可能更快,尤其是在表达式上有索引的情况下cos(id) + cos(id)



 类似资料:
  • 问题内容: 由于您不能在MySQL的where子句中使用计算列,如下所示: 你必须使用 计算(在该示例中,“(a * b + c)”是每行执行一次还是两次执行?有没有一种方法可以使速度更快?我觉得很奇怪,可以对列进行ORDER但没有WHERE- 条款。 问题答案: 您可以使用HAVING来过滤计算列: 请注意,您需要将其包括在SELECT子句中才能起作用。

  • 我对编码相当陌生。我的“count句子”功能有问题。我将字符串与“.”进行比较,"?" , 和数一句话。无论字符串中有多少标点符号,它都只向句子计数器添加一个。我是否使用strcmp错误地获得了我想要的结果?是否有其他方法可以实现这一点?

  • 以下是一个练习的说明,我必须解决cs50 pset2可读性问题(从站点粘贴副本): 你的程序应该计算文本中字母、单词和句子的数量。您可以假设字母是从a到z的任何小写字符或从a到z的任何大写字符,由空格分隔的任何字符序列都应算作一个单词,句号、感叹号或问号的任何出现都表示句子的结尾 这些不是完整的说明,只是我有问题的部分。 我知道如何计算课文中的字母数,但我不知道如何计算单词和句子。我试着用谷歌搜索

  • 本文向大家介绍基于AngularJS实现iOS8自带的计算器,包括了基于AngularJS实现iOS8自带的计算器的使用技巧和注意事项,需要的朋友参考一下 前言 首先创建angularjs的基本项目就不说了,最好是利用yeoman这个脚手架工具直接生成,如果没有该环境的,当然也可以通过自行下载angularjs的文件引入项目。 实例详解 main.js是项目的主要js文件,所有的js都写在这个文件

  • 问题内容: 我正在尝试使用pq驱动程序对Go中的PostgreSQL数据库执行以下查询: 哪里过去了。 我尝试了很多不同的事情,例如: 结果是。我也试过 这也失败了 我也尝试直接传递一片整数/字符串并得到。 那么如何在Go中执行此查询? 问题答案: 预先构建SQL查询(防止SQL注入) 如果要为每个值生成一个带有参数占位符的SQL字符串,则立即生成最终SQL会更容易。 请注意,由于值是s,因此存在

  • 问题内容: 这行代码是我的select语句的摘录。 以下是我的where子句的摘录 我的问题是如何引用FreeDaysRemaining列,因此可以将其与@进行比较 我正在寻找这样的东西 问题答案: 除了Aaron的答案,您还可以使用公用表表达式: