我有这样的记录
A5
A4
Z1
B2
C7
C1A
C11A
B1
B4
Run Code Online (Sandbox Code Playgroud)
我希望它们以这种方式排序
A4
A5
B1
B2
B4
C1
C11A
C7
Z1
Run Code Online (Sandbox Code Playgroud)
使用该ORDER BY条款。
我希望它们按字母排序,然后按数值排序。
在 Ubuntu 14.04 上运行 PostgreSQL 9.3,在 Windows 7 上运行 pgAdmin III 1.18.1。
我尝试过Tools->Server Status,但出现错误:
“无法读取目录“pg_log”没有这样的文件或目录”
我在网上没有看到任何答案。服务器主要设置为默认设置(用于日志记录)。我通过 pgAdmin 连接的用户是超级用户级别的帐户。
使用目的:监控将成为实时系统的内容。
所以我有一个真正的休息日什么的,但对于我的生活,我无法弄清楚这一点。我想分tier1由total获得总数的百分比。我是这样想的:
(tier1 / total) as per
Run Code Online (Sandbox Code Playgroud)
但没有运气。我将这些 CAST 作为 int 并且仍然没有。我会得到一个错误并且查询不会执行,或者我会得到一个值 0。
这是我正在尝试使用的内容:
SELECT count(student_id) as total
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 1) as tier1
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 2) as tier2
,(SELECT count(fall_september_tier) FROM national_assessments.aimsweb WHERE general_outcome_measure = 'PSF' AND fall_september_tier = 3) as tier3
FROM national_assessments.aimsweb
WHERE general_outcome_measure = 'PSF' AND fall_september_tier IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
我也有这个想法,但没有运气:
SELECT tier1,total, tier1/total as test …Run Code Online (Sandbox Code Playgroud) 我在 Java 中有一个 Web 应用程序,它使用查询。我不想把查询写成Java,所以我做了一个函数:
CREATE OR REPLACE FUNCTION testFunc(inputs text) RETURNS TABLE(...) AS
$$
SELECT .... FROM ...
JOIN ...
where true
;
$$
LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)
我希望函数参数 INPUTS 也位于 WHERE 子句中,因此如果输入是
AND speed = 0 AND ....
Run Code Online (Sandbox Code Playgroud)
Where 子句看起来像
where true AND speed = 0 AND ...
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
编辑
也可以接受许多参数(a int、b string、c string ..)但是我需要有
WHERE speed = * AND stop = * AND ...
Run Code Online (Sandbox Code Playgroud)
这是不可接受的。我怎样才能做到这一点?
或者我可以在里面放一个 if 语句吗?喜欢
Select .. . from ...
JOIN ...
WHERE true
IF (a …Run Code Online (Sandbox Code Playgroud) 我有一个文章表,我希望 slug 是独一无二的。
CREATE TABLE article (
title char(50) NOT NULL,
slug char(50) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
当用户输入标题时,例如News on Apple,我想检查数据库以查看是否存在相应的 slug,例如news-on-apple。如果是这样,我将给一个数值添加后缀,直到找到一个唯一的值,例如news-on-apple-1. 可以通过递归 CTE 查询而不是在我的 ORM 中进行递归来实现。是否有一个很好的大概数字,我应该停止递归和出错。我可以想象人们使用相同的标题 1000 次,这将导致 1000 次查询只是为了创建 1 篇文章。
我对递归 CTE 的理解可能是不正确的,并且没有更好的方法来找到唯一的 slug。请提出任何替代方案。
在 Postgres 9.4 中,我试图提取UNIQUEPostgres 中给定表的约束中涉及的所有列的名称。
看起来此类列的名称包含在pg_constraint. 根据文档,与我的问题相关的列称为conkey,它恰好是一个ints数组。
关键是,我提出的查询给了我错误的结果,我很确定这是因为我conkey以错误的方式加入。查询如下:
SELECT
pg_attribute.attname,
pg_constraint.*
FROM
pg_attribute
INNER JOIN pg_constraint
ON pg_attribute.attnum = ANY (pg_constraint.conkey)
WHERE pg_constraint.conrelid = (
SELECT
oid
FROM
pg_class
WHERE
relname LIKE 'test_table'
)
AND pg_constraint.contype = 'u'; -- to filter out non-unique constraints
Run Code Online (Sandbox Code Playgroud)
这是一个用于快速重现的表 DDL:
CREATE TABLE "test_table" (
"date" date DEFAULT now() NOT NULL,
"foo" varchar COLLATE "default" NOT NULL
CONSTRAINT "test_table_foo_key" UNIQUE ("foo")
) …Run Code Online (Sandbox Code Playgroud) 我们正在运行 Postgres 9.3,偶尔会出现死锁问题。目前有人注意到并将手动终止进程。当它们发生时,是否有处理这些问题的最佳实践?我知道有一个statement_timeout,lock_timeout而deadlock_timeout但大多数地方,我读状态,你不想设置此的postgres.conf文件。
只是想看看是否有典型/最佳实践方法。看起来将 deadlock_timeout 设置为 10 分钟就足够了,但我想确保我没有遗漏一些关键的东西,为什么这会是一个坏主意。
有没有办法禁用查询中使用的参数值的日志记录,同时仍然记录实际查询本身?
我想设置log_min_duration_statement = 0为与 pgBadger 一起使用。每个查询我得到两行,例如:
LOG: Select * from table where id = $1
DETAIL: parameters: $1 = 55
Run Code Online (Sandbox Code Playgroud)
我真的很想压制 DETAIL行,因为它我的日志膨胀并保存敏感信息。
是否可以从 Postgres 中禁用它?
简而言之,我有一个包含普通散文的 Postgres 列,我想确定所有行中x最常用的单词(“单词”是由空格分隔的一组字符,但不是停用词)。
我找到了两个几乎达到目标的解决方案:
SELECT *
FROM ts_stat($$SELECT to_tsvector('english', title) FROM item$$)
ORDER BY ndoc DESC
LIMIT 50;
Run Code Online (Sandbox Code Playgroud)
这很好,除了它返回词干。
SELECT UNNEST(string_to_array(title, ' ')) AS word, COUNT(*) AS ct
FROM item
GROUP BY 1
ORDER BY 2 DESC
LIMIT 50;
Run Code Online (Sandbox Code Playgroud)
这个返回完整的词,但包括停用词。
为简单起见:应该在 上找到停用词TABLE stop_words (lowercase_stopword text PRIMARY KEY)。
有人可以帮我上网吗?
我正在尝试在 Postgres 中创建一个函数,该函数可以遍历给定jsonb对象中的每个键/值对。
create or replace function myFunction
(input jsonb)
returns jsonb as $$
BEGIN
// foreach(key in input)
// do some math operation on its corresponding value
returns input;
END; $$
Run Code Online (Sandbox Code Playgroud)
参数输入应为 jsonb 对象,例如{"a":1, "b":2, "c":3}.
我想遍历对象中的每个键/值对。从我的评论中可以看出,我曾经使用更通用的编程语言(如 c、java 等)编写后端代码。所以我不擅长 SQL。我曾尝试在线搜索,但他们谈论如何遍历jsonb数组而不是对象。所以真的卡在这里了。