AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[sql-standard](dba)

Martin Hope
Tiago Stapenhorst Martins
Asked: 2022-09-21 10:00:58 +0800 CST

LIKE 与通配符结尾 'abc%' 使用大于/小于运算符的等价物是什么?

  • 1

我刚刚发现一些特定的模式在与 LIKE 文本运算符一起使用时使用 BTREE 索引来加速查询,例如:

  • 'abc123'(没有通配符的文本)
  • 'abc%'(最后只有一个通配符的文本)

使用仅使用大于/小于/等于运算符'%'的模式末尾(例如)仅存在一个通配符的模式的 LIKE 文本运算符的等价物是什么?"a_column" LIKE 'abc%'

我的兴趣是在 PostgreSQL 中实现这一点,但这可能是一个 SQL 标准问题。

sql-standard postgresql
  • 2 个回答
  • 43 Views
Martin Hope
Pablo
Asked: 2021-10-30 15:42:14 +0800 CST

为索引列高效生成分位数

  • 0

我正在尝试为分布式处理系统构建查询分区器。该系统可以与支持 JDBC 的数据库一起使用。

此分区器的输入将是表的名称和用于分区的列。让我们假设此列上有一个索引。例如:

Table: customers
Partitioning column: customer_id

从那里,我将构建以下查询:

select * from customers where customer_id >= ? and customer_id < ?

然后,我想将域划分customer_id为 10 个大小大致相同的范围。我想发出一个快速查询来解决这个问题。

我percentile_cont在 ANSI SQL 中找到了这个函数(很好,因为很多数据库都支持这个)——我写了这个查询,它似乎有效:

SELECT 
  percentile_cont(customer_id, 0)  over(),
  percentile_cont(customer_id, 0.1)  over(),
  percentile_cont(customer_id, 0.2)  over(),
  percentile_cont(customer_id, 0.3)  over(),
  percentile_cont(customer_id, 0.4)  over(),
  percentile_cont(customer_id, 0.5)  over(),
  percentile_cont(customer_id, 0.6)  over(),
  percentile_cont(customer_id, 0.7)  over(),
  percentile_cont(customer_id, 0.8)  over(),
  percentile_cont(customer_id, 0.9)  over(),
  percentile_cont(customer_id, 1)  over()
FROM customers LIMIT 1

我的问题是:

  1. 如果该列customer_id被索引 - 此查询是否会相当快地快速生成范围,然后使用它们来并行化 10 个查询?
  2. 有没有其他方法可以使用分区列为给定表找到类似大小的范围?
sql-standard index
  • 2 个回答
  • 54 Views
Martin Hope
Daniel Müller
Asked: 2021-05-19 04:35:20 +0800 CST

在SQL中获取具有特定值的行之前的行

  • 1

我有一个如下表,其中用户操作与时间戳一起存储。我的目标是识别在特定操作(名为reference_action)之前发生的操作并计算这些操作的数量以查看哪些操作在特定操作之前发生以及它们是如何分布的。

我知道像 LAG() 这样的窗口函数,我可以在其中获取某一行之前的行,但不知道如何包含像WHERE action_name = "reference_action".

查询引擎是 Presto,表是 Hive 表,但我最感兴趣的是一般的 SQL 方法,因此这无关紧要。

会议 动作名称 时间戳
1 “一些动作” 1970-01-01 00:01:00
1 “一些动作” 1970-01-01 00:02:00
1 “一些动作” 1970-01-01 00:03:00
1 “desired_action1” 1970-01-01 00:04:00
1 “reference_action” 1970-01-01 00:05:00
1 “一些动作” 1970-01-01 00:06:00
1 “一些动作” 1970-01-01 00:07:00
2 “一些动作” 1970-01-01 01:23:00
2 “一些动作” 1970-01-01 02:34:00
2 “desired_action1” 1970-01-01 03:45:00
2 “reference_action” 1970-01-01 04:56:00
2 “一些动作” 1970-01-01 05:58:00
3 “一些动作” 1970-01-01 01:23:00
3 “一些动作” 1970-01-01 02:34:00
3 “desired_action2” 1970-01-01 03:45:00
3 “reference_action” 1970-01-01 04:56:00
3 “一些动作” 1970-01-01 05:58:00

结果应如下所示:

行动 数数
“desired_action1” 2
“desired_action2” 1

有两行,其中“desired_action1”直接跟在“reference_action”行之后,当按 排序时timestamp,因此计数为 2。同样的逻辑适用于为什么“desired_action2”的计数为 1。

目标是了解用户在购买之前做了什么(购买 = reference_action)。要了解他之前做了什么,我想查找购买之前发生的操作。因此,我需要在reference_action 之前知道行中的action_name。required_actions 必须被计算,reference_actions 只是我想要计算的操作之后的行,用于确定应该计算哪些值。

sql-standard window-functions
  • 1 个回答
  • 135 Views
Martin Hope
technazi
Asked: 2021-05-01 18:00:07 +0800 CST

为什么 FROM 多个表默认为笛卡尔积?

  • 1

当我进行如下查询时,做笛卡尔积(交叉连接)背后的想法是什么 -

SELECT * FROM agents, orders

我认为它们会连接(如pandas)。添加表格而不是相乘感觉更自然。

只是好奇,并没有在互联网上找到默认笛卡尔积背后的理由。我假设FROM table1, table2根据 SQL 的语法对于交叉连接可能会更正确,但为什么呢?

sql-standard join
  • 4 个回答
  • 1188 Views
Martin Hope
Nick Muise
Asked: 2021-02-18 07:20:18 +0800 CST

PostgreSQL 声称支持 179 个 SQL:2016 特性中的 170 个,但它也列出了它不支持的 SQL:2016 的 309 个特性。为什么会出现差异?

  • 0

截至 2020 年 9 月,PostgreSQL 声称支持大部分 SQL:2016 标准,但其中的数字根本不匹配。来自 PostgreSQL 的文档:

从 2020 年 9 月发布的第 13 版开始,PostgreSQL 至少符合SQL:2016 Core 一致性的 179 个强制性特性中的 170 个。(强调我的)

因此不支持 9 个功能。但是在其他地方,PostgreSQL 列出了它不支持的 SQL:2016 的所有特性,并且列出了309个特性。这比SQL:2016 中声称的第一页更不受支持的功能。当然,一些不受支持的功能是无关紧要的,例如“Embedded Ada”或“Module Language COBOL”,但无论哪种方式,这里列出的不受支持的功能都超过 9 个。而且我认为 SQL:2016 在 2020 年和 2021 年之间没有太大变化(甚至根本没有变化),所以这不能成为不匹配的原因。

我认为个别不受支持的特性可能会以某种方式组合成 9 个“特性”,例如,所有涉及支持死语言的特性都算作一个特性,所有与 XML 相关的特性都算作一个特性,等等,但是在略读之后309 个不受支持的功能列表,我看不出有什么明确的方法可以做到这一点。

那么,为什么会出现差异?是因为单个功能被组合在一起,还是其他原因?

sql-standard postgresql
  • 1 个回答
  • 76 Views
Martin Hope
Philip Kelley
Asked: 2020-07-17 06:48:56 +0800 CST

SQL Server ANSI (ISO) 兼容性设置的历史是什么?

  • 0

我知道这些设置的作用以及何时使用它们,我真正想知道的是为什么会存在这个问题。

最近,我遇到了一个丑陋的情况——那就是另一个丑陋的情况——涉及我将称之为ANSI 七的设置:

ansi_nulls                ON
ansi_padding              ON
ansi_warnings             ON
arithabort                ON
concat_null_yields_null   ON
numeric_roundabort       OFF
quoted_identifier         ON

我在上面列出了它们以及我认为最常推荐的默认设置。(有趣的是,SET ANSI_DEFAULTS会将它们全部设置为 ON 或 OFF,而不对 numeric_roundabort 进行特殊处理,但我离题了。)

这些影响代码、查询、查询计划和一大堆东西,可以通过在整个 SO 中搜索它们中的任何一个来找到。有这么多的点击,很明显几十年来它们已经给成百上千的开发者带来了痛苦和痛苦。(早在 SO 提供帮助之前,我就遇到了他们的问题。)

我想知道的是:为什么?

为什么这是一个问题?这些设置是从哪里来的?谁认为这是个好主意?最重要的是,为什么这七个几乎总是混为一谈?

有人对此有任何见解吗?文章、博客甚至学习频道纪录片的链接都很棒。

sql-server sql-standard
  • 1 个回答
  • 127 Views
Martin Hope
dan1st
Asked: 2019-12-20 04:48:07 +0800 CST

正确的表引用

  • 0

我想一般使用任何 SQL 数据库(我使用的是 jdbc,如果提供了驱动程序和 URL,它就可以工作)。

似乎不同的 DBMS 对表名使用不同的引用。

例如,我在 MySQL 中有以下内容:

SELECT * FROM `tablename`;

当它是

SELECT * FROM [tablename];

在 MS SQL 服务器中。

是否有所有数据库都支持的“统一”引用?或者是否有一个 jdbc 方法可以告诉我正确的引用?

sql-standard jdbc
  • 1 个回答
  • 35 Views
Martin Hope
Leezard
Asked: 2019-11-01 13:15:07 +0800 CST

如何在 Informix 12.1 中将 BIGINT 转换为 DATETIME

  • 2

我是 Informix 的新手,我正在尝试将 bigint 转换为日期时间。

SELECT sdatetime
FROM CallDetail;

Results:
sdatetime
----------
1572509662678
1572518550704
1572519033540

这似乎是 1-1-1970 的毫秒数,但我无法正确转换它的语法。我得到的最接近的是没有时间的约会。我两个都需要。

我怎样才能做到这一点?

sql-standard query
  • 1 个回答
  • 605 Views
Martin Hope
Joshua Fox
Asked: 2019-06-25 00:29:12 +0800 CST

如何从投影内的投影中引用列别名?

  • 0

投影 ( select) 值的计算是有用且常见的。然而,在投影中声明的列别名不能在那里使用。

select sellprice as x, cost as y, x/y as markup  
from mytable

给出一个错误。

我可以做到这一点

select sellprice as x, cost as y, sellprice/cost as markup  
from mytable

as但这是一个简单的例子:我们通常为复杂的情况声明列别名。例如cost,我可能有一些从averageetc 构建的函数,而不是 ,我将其声明为列别名。

如何在投影子句中使用这些别名?

sql-standard projection
  • 1 个回答
  • 301 Views
Martin Hope
tinlyx
Asked: 2019-05-15 08:44:38 +0800 CST

什么时候需要 AS 关键字?

  • 5

在以下语句(PostgreSQL 11)中:

=> SELECT c cost FROM tt;
ERROR:  syntax error at or near "cost"
LINE 1: SELECT c cost FROM tt;

我得到一个错误。在字段表达式周围添加括号无济于事 ( SELECT (c) cost FROM tt;)。但是添加AS关键字可以修复它。

=> SELECT c AS cost FROM tt;
 cost 
------
    1
...

我意识到这cost是一个关键字,但我的印象是AS关键字是可选的。

从语言的角度来看,为什么AS这里需要(或有用)关键字?这里的 PostgreSQL 行为是标准的还是有记录的?

是否还有其他AS需要关键字的情况?

sql-standard postgresql
  • 1 个回答
  • 371 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve