我正在使用 PostgreSQL,我无法弄清楚对两个不同列进行 COUNT 和 SUM 的查询。基本上我正在寻找类似的东西SUM(hits DISTINCT record_id)
桌子:
status record_id hits
0 123 1
0 123 1
0 124 1
0 125 1
0 126 0
1 123 0
1 124 0
1 125 1
1 125 1
Run Code Online (Sandbox Code Playgroud)
想要的结果:
status unique_records_count hits_sum
0 4 3
1 3 1
Run Code Online (Sandbox Code Playgroud)
做一个
SELECT status, COUNT(DISTINCT record_id), SUM(hits)
FROM table
GROUP BY status
Run Code Online (Sandbox Code Playgroud)
返回
status unique_records_count hits_sum
0 4 4
1 3 2
Run Code Online (Sandbox Code Playgroud) 高效运行 PostgreSQL 数据库服务器的内存/cpu/其他要求是什么?是一种为某种要求指定硬件配置的方法 - 例如用户数量、查询数量等?
嗨,我正在尝试创建一个登录角色(用户),其修改数据库的能力相当小。他们应该能够选择、删除、创建触发器、插入和更新。然后,我希望拥有多个作为用户成员的帐户,因此它们具有相同的权限,但我可以为单个用户记录编辑。
我在数据库设计中使用 pgadmin,我的程序使用 QtSQL 访问它。
尝试选择一些数据作为测试时,Qt 捕获了我收到的错误消息。当我运行与数据库所有者和超级用户相同的代码时,我没有问题。
bool run_query(const QString & q){
QSqlDatabase db = QSqlDatabase::database("default");
QSqlQuery query(db);
query.exec(q);
if (!query.isActive()){
QMessageBox::warning(0, QObject::tr("Database Error"),
query.lastError().text());
return false;
}
while (query.next()){
QString title = query.value(0).toString();
std::cerr << qPrintable(title) << std::endl;
}
return true;
}
run_query("Select forename from contacts;");
Run Code Online (Sandbox Code Playgroud)
错误:关系联系人的权限被拒绝 QPSQL:无法创建查询
到目前为止,我已经创建了角色(用户)。
-- Role: user
-- DROP ROLE "user";
CREATE ROLE "user" LOGIN
ENCRYPTED PASSWORD 'md54d45974e13472b5a0be3533de4666414'
NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
COMMENT ON ROLE "user" IS 'Low level user';
Run Code Online (Sandbox Code Playgroud)
因为这给了以前的问题。我尝试为数据库添加公共权限,但这也不起作用。
现在我不知道去哪里寻找解决方案。任何帮助深表感谢。谢谢。
我维护一个使用 PostgreSQL 数据库的遗留应用程序。
该应用程序严重依赖于存储过程(又名函数)。
我想将这些函数保存到以函数名命名的文件中,以便我可以使用 VCS(版本控制系统)。
我知道我可以ALTER FUNCTION使用 using保存代码,PgAdmin但这一次只允许我保存一个函数。
我正在寻找一种自动保存所有功能的方法。有没有办法编写此任务的脚本?
Postgres 的 string_agg(expr, delimiter) 函数很棒。但我想要一个版本,它接受一个参数——要聚合的字段——并假设分隔符为 ', ' 因为这是我想要的 10 次中的 9 次。使用非聚合函数,我可以只需这样做:
create or replace function public.string_agg(text)
returns text
as $$
select string_agg($1, ', ');
$$ language sql
immutable;
Run Code Online (Sandbox Code Playgroud)
但由于 string_agg 是一个聚合函数,这不起作用。它抱怨我传递给它的字段需要在 GROUP BY 子句中,这告诉我查询引擎不知道我的包装器是一个聚合函数。
我查看了用户定义聚合的文档(http://www.postgresql.org/docs/9.1/static/xaggr.html 和http://www.postgresql.org/docs/9.1/static/sql-createaggregate .html ) 但我不清楚如何使用现有的 string_agg(text, text) 定义我的新 string_agg(text)。看来我必须从头开始定义我的新函数,这比我想承担的要复杂得多,而且我也不完全有信心我可以完美地反映内置 string_agg 的行为。
那么是否有一些技术可以创建一个我没有看到的简单包装器?或者我将不得不做更多的工作?
我们在 PostgreSQL 数据库中有一个表,它每天以数百万行的速度增长。
每行包括:
ID
Foreign user ID
Date and time
Other data
Run Code Online (Sandbox Code Playgroud)
日期和时间不是严格单调的ID,但它们很接近。
查询此表时,我们只对获取给定外部用户 ID 的行感兴趣,其中包含最近两周的日期和时间。永远不会查询超过两周的行,但我们希望保留它们以供存档。
鉴于此特殊用例:
我有一个表,它存储过去 5 天的历史温度,存储在基于城市的整数 [] 列中。问题是:如何查询值大于或小于指定值的条目?这是一个示例表:
+=========+==================+
| city | temps |
+=========+==================+
| Seattle | {65,72,63,56,72} |
+---------+------------------+
| Miami | {83,75,69,72,79} |
+---------+------------------+
Run Code Online (Sandbox Code Playgroud)
假设我想查询温度高于 80 的城市。在此示例中,只有迈阿密的温度高于 80,因此只应返回该行。我尝试了一些没有成功的查询,查看了 intarray,但这似乎也不能解决我的问题。非常感谢!
我正在运行 PostgreSQL 9.1
是否可以使用archive_command发送到多台机器?它是否像用 a 分隔一样简单,&&因为它本质上只是一个命令行?
command1 && command2
Run Code Online (Sandbox Code Playgroud)
我认为如果一个命令失败,这可能会产生不良影响,例如,如果command1失败则command2不会运行;如果command2失败,它会在整个过程中返回非零值,Postgres 会重新尝试发送 WAL,这意味着它会重新运行command1。
我希望有一个更正式的解决方案来解决这个问题。我的目标是在数据中心内部备份一份,在数据中心外部备份一份。
我们现在在处理高峰时段服务器的密集流量时遇到问题;请参阅有关调整 DB 的相关问题。目前,我们正在使用较小的云服务作为服务器托管。目前,我们正在研究将我们的服务器迁移到 AWS 的可能性。我们遇到的问题主要与我们的数据库服务器有关,因此我们希望拥有比我们现在使用的要好得多的 AWS 实例。
数据库服务器所在云服务器的统计信息如下:
在选择用于 PostgreSQL 数据库服务器的亚马逊实例时,您有什么特别需要考虑的吗?
在我看来,这里有一个例程表和一个表创建脚本,我已经把它放在了 /tmp/try.sql 中。我在 OSX 10.10.2 下运行 postgres。
这是表:
cow_dev=# \d carc
Table "public.carc"
Column | Type | Modifiers
---------------+--------------+--------------------------------------------------- ---------
internal_id | integer | not null default nextval('carc_internal_id_seq'::regclass)
acct_nbr | character(6) |
birth_date | date |
anm_key | integer |
slghtr_dt | date |
sire_assoc_id | integer |
sire_reg | text |
dam_assoc_id | integer |
dam_reg | text |
sex | text |
carc_kphf_pct | real |
carc_wt | integer |
marbling | integer |
ribeye_area | real | …Run Code Online (Sandbox Code Playgroud)