小编Eva*_*oll的帖子

在 PostgreSQL 中为滚动总和设置非负下限

这是一个非常有趣的问题(针对 SQL Server 提出的问题),我想尝试一下,看看它是如何在 PostgreSQL 中完成的。让我们看看其他人是否可以做得更好。拿着这个数据,

CREATE TABLE foo
AS
  SELECT pkid::int, numvalue::int, groupid::int
  FROM ( VALUES
    ( 1,  -1   , 1 ),
    ( 2,  -2   , 1 ),
    ( 3,  5    , 1 ),
    ( 4,  -7   , 1 ),
    ( 5,  1    , 2 )
  ) AS t(pkid, numvalue, groupid);
Run Code Online (Sandbox Code Playgroud)

我们正在尝试生成这个:

PKID   RollingSum    GroupID
----------------------------- ## Explanation: 
1      0             1        ## 0 - 1 < 0  => 0
2      0             1        ## 0 - 2 < 0 …
Run Code Online (Sandbox Code Playgroud)

postgresql aggregate window-functions running-totals

3
推荐指数
1
解决办法
4522
查看次数

Mysql 选择具有 7 个连续日期的行

想象一个包含以下列的简单表: item_id, date
和值:

CREATE TABLE foo (item_id int, date date);

INSERT INTO foo(item_id, date)
VALUES
    ( 1, '2017-02-10' ),
    ( 2, '2017-02-10' ),
    ( 1, '2017-02-11' ),
    ( 1, '2017-02-12' ),
    ( 1, '2017-02-13' ),
    ( 2, '2017-02-13' ),
    ( 1, '2017-02-14' );
Run Code Online (Sandbox Code Playgroud)

如何选择item_id表中连续7天记录的s?

开始和结束日期未知。它应该从任何开始日期到之后的连续 7 天都可用。

mysql php

3
推荐指数
1
解决办法
5623
查看次数

Spatial_ref_sys 中存储了什么?

迁移到其他服务器时是否应该复制此表中的数据?

postgresql spatial postgis

3
推荐指数
1
解决办法
3693
查看次数

&amp;&amp; vs ST_Intersects 性能

我试图找出位于矩形区域(信封)内的点。我在使用了一点点难度的理解性能影响&&运营商相比ST_Intersect。

但是,我想我在尝试提出我的问题时解释了我自己的问题。我无论如何都会提交它,以防它对某人有用。

&&的手册说(具有讽刺意味的是,页面名称是 geometry_overlaps.html):

&& — 如果 A 的 2D 边界框与 B 的 2D 边界框相交,则返回 TRUE。`

ST_Intersects的手册说:

如果几何/地理“在二维空间上相交”-(共享空间的任何部分),则返回 TRUE,如果不相交(它们不相交),则返回 FALSE。对于地理 - 容差为 0.00001 米(因此任何靠近的点都被视为相交)

ST_Intersects在这种情况下将返回 true。因为我&&在任何一种情况下都使用矩形边界框,所以我的目标运算符几乎做同样的事情。我想知道是否&&是我的目的最快的运营商?感觉&&必须做更少的检查,所以它必须更有效率。

这是一个直接复制自&&,ST_Intersects改编的示例:

SELECT
        t1.id AS t1,
        t2.id AS t2,
        t1.ln && t2.ln AS "&&",
        ST_Intersects(t1.ln,t2.ln)
FROM ( VALUES
        (1, 'LINESTRING(0 0, 3 3)'::geometry),
        (2, 'LINESTRING(0 1, 0 5)'::geometry)
) AS t1(id,ln)
CROSS JOIN (VALUES
        (3, 'LINESTRING(1 2, 4 …
Run Code Online (Sandbox Code Playgroud)

postgresql spatial postgis

3
推荐指数
1
解决办法
2270
查看次数

PostgreSQL 是否支持 ICU 整理的选项和设置?

ICU 指定不同的LDML 整理设置。其中一些看起来很有趣,尤其是关于大小写和口音的那些,

  • “忽略重音”: strength=primary
  • “忽略重音”但要考虑大小写: strength=primary caseLevel=on
  • “忽略大小写”: strength=secondary
  • “忽略标点符号”(完全): strength=tertiary alternate=shifted
  • “忽略标点符号”但区分标点符号:strength=quaternary alternate=shifted可能是更好的做事方法

您还可以在此处查看这些文档。PostgreSQL 10 ICU 整理支持是否可以使用这些 ICU 选项和设置?

CREATE COLLATION special (provider = icu, locale = 'en@strength=primary');
SELECT 'Å' LIKE 'A' COLLATE "special"; # returns false
Run Code Online (Sandbox Code Playgroud)

我也试过CLDR BCP47

从 ICU 54 开始,排序规则属性也可以通过语言环境关键字指定,使用旧的语言环境扩展语法 (" el@colCaseFirst=upper") 或语言标记语法 ("el-u-kf-upper")。关键字和值不区分大小写。请参阅LDML 归类规范、归类设置和列出有效归类关键字及其值的数据文件。(不支持已弃用的属性 kh/colHiraganaQuaternary 和 vt/variableTop。)

为此,这看起来是对的

CREATE COLLATION special (provider = icu, locale = 'en-ks-level1');
SELECT …
Run Code Online (Sandbox Code Playgroud)

postgresql collation postgresql-10 international-components-unicode

3
推荐指数
1
解决办法
1485
查看次数

我怎么知道什么需要 DAC?

在玩 SQL Server 时,我遇到了一个半隐秘的错误。本质上,我只需要登录 DAC。对于何时需要 DAC,是否有任何一般性建议?我怎么知道我需要它来访问sys.sysobjvalues而不用谷歌搜索错误消息?

DAC 提供哪些访问权限?

sql-server dac

3
推荐指数
1
解决办法
519
查看次数

Oracle 是否支持 VALUES 表达式构造?

PostgreSQL 支持 SQL 规范的VALUES表达式,规范称为<table value constructor>

SELECT *
FROM (VALUES
  (1, 'one'),
  (2, 'two'),
  (3, 'three')
) AS t(num,letter);
 num | letter
-----+--------
   1 | one
   2 | two
   3 | three
(3 rows)
Run Code Online (Sandbox Code Playgroud)

在dbfiddle上尝试,我无法让它在 Oracle 中工作。我不断得到

ORA-00903: 无效的表名

Oracle 是否支持VALUES ( expression [, ...] )? 如果不是,从查询中提供的行文字创建虚拟表的替代方法是什么?

oracle

3
推荐指数
2
解决办法
3153
查看次数

Postgres,如何将“0”值插入串行?

serial我的应用程序表中有一个ID。但是,我想插入一个0id 记录来表示全局。

有没有一种方法可以将它插入我的桌子而不影响计数器?

postgresql insert sequence

3
推荐指数
1
解决办法
3186
查看次数

使用 PostgreSQL 函数而不是加入?

我对如何做某事没有疑问,但我是否应该这样做。抱歉,如果有更合适的论坛。

我有一个功能:

CREATE OR REPLACE FUNCTION get_name(user_id UUID) RETURNS TEXT AS $$
    SELECT username
    FROM   users
    WHERE  users.id=user_id
$$ LANGUAGE 'sql';
Run Code Online (Sandbox Code Playgroud)

我喜欢使用这个函数在其他查询中从 user_id 转换为用户名。这是一个常见的操作,我认为一个函数会加快开发时间,以查找一次性统计数据以进行数据分析。我不关心查询速度。这是使用函数来执行此操作的好习惯还是我应该只执行连接?

我对此很陌生,我的同事说将函数用于常规选择/连接可以执行的操作是不好的做法。他还提到,函数最好用于常规选择无法完成的事情。所以我想问其他人什么是好的做法?

编辑:如果这是一种不好的做法,那么对于函数执行稍微复杂一些的常见操作的情况是否更合理?

postgresql best-practices functions

3
推荐指数
1
解决办法
204
查看次数

如何在 ANSI SQL 89 语法中执行 JOIN?

在 Oracle 中,我使用

SELECT * FROM table1...JOIN...
Run Code Online (Sandbox Code Playgroud)

其中点表示连接类型或连接条件。

这是 ANSI 89 语法吗?如果没有,那么如果我使用 ANSI 89,我将如何执行连接?

join sql-standard

3
推荐指数
1
解决办法
2708
查看次数