我有 400,000 条记录需要分区。记录将每年增加 100,000 条,这些新记录可能需要添加 1000 个新分区。
以下是我的一些担忧:
例子:
假设 100,000 条中的 10,000 条需要分成 100 条记录的分区,因此将创建 1000 个分区,并创建 9 个额外的分区,每个分区包含 10,000 条记录,总共 1009 个分区。
问题:
笔记:
我想比较两组列,但从比较中排除一列,因为它永远不会出现在第二个表中,我的结果需要它。所以,解释:
两个表的列:
ID (独特的价值,所以我不想比较)amountemaildate我想要实现的目标:从表 1 中获取在amount、email和上具有完全相同值的所有事务date。我也希望ID在最终结果集中,但如果我使用except子句进行比较,我的查询将有 0 个结果。
代码:
Select /*ignoreAtComparison*/ t1.ID, t1.amount, t1.email, t1.date from t1
except
Select /*ignoreAtComparison*/ t2.ID, t2.amount, t2.email, t2.date from t2 ;
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有 (2) 个 postgresql 数据库。我基本上使用相同的 pg_dump 导出文件在不同的机器上创建 (2) db。DDL 是相同的,但是,我收到了no relations其中之一的消息。search_path 设置正确。我相信我错过了让我的(2)个用户看到这个模式的授权。Host2 上的设置是正确的。我只是不知道使用哪个赠款。
信息:
mra_prd_99999=> \dt
No relations found.
Run Code Online (Sandbox Code Playgroud)
主机 1:
mra_prd_99999=> \z
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
-------------------+---------------------------+-------+-------------------------------------+--------------------------
mra_dev_schm_99999 | abc_bounce_category | table | mra_prd_99999=arwdDxt/mra_prd_99999 |
Run Code Online (Sandbox Code Playgroud)
主机 2:
mra_prd_99999=> \z
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
-------------------+---------------------------+-------+----------------------------------------------+--------------------------
mra_dev_schm_99999 | abc_bounce_category | table | mra_prd_99999=arwdDxt/mra_prd_99999 +|
| | | mra_prd_99999_user1=arwdDxt/mra_prd_99999+|
| …Run Code Online (Sandbox Code Playgroud) 有没有办法在插入查询时自动插入带区域的时间戳?(就像 id 自动递增,因为我不想在 sql 中传递参数作为时间,如果我们使用 zone,则每个地方都相同)。pg 9.1 版。以及如何使用所需的时间格式?
我需要使用两个表构建一些报告:
AuthorTitles: id(pk), author_id, title_id
AuthorReports: id(pk), author_id, title_id, items_sold, date
Run Code Online (Sandbox Code Playgroud)
我的报告需要输出以下内容: author_id, max_items_sold_wavg, items_sold_wavg, date
下面的代码可能有一些错误,请检查小提琴。
max_items_sold_wavg 是空闲查询的加权平均值:
WITH maxitems AS (
SELECT
at.author_id,
at.title_id,
max(ar.items_sold) as sold,
ar.date::date as date
FROM author_titles at
LEFT JOIN author_reports ar ON ar.author_id = at.author_id AND at.title_id = ar.title_id
GROUP BY 1, 2, 4
), totitems AS (
SELECT
mi.author_id
count(ti.title_id) as total,
count(CASE WHEN (mi.sold = 1) THEN mi.title_id END) AS sold1,
count(CASE WHEN (mi.sold = 2) THEN mi.title_id END) AS …Run Code Online (Sandbox Code Playgroud) 有人可以解释这种神秘的 Postgres 行为吗?我正在psql命令行执行以下查询。
mydb=> select '20150526' > '2015-05-25';
-[ RECORD 1 ]
?column? | t
mydb=> select '20150526' > '2015-05-26';
-[ RECORD 1 ]
?column? | f
mydb=> select '20150526' > '2015-05-27';
-[ RECORD 1 ]
?column? | f
Run Code Online (Sandbox Code Playgroud)
如果 Postgres 实际上是直接比较字符串,则这三个值要么为真,要么为假,这取决于字符排序的定义方式。这似乎表明 Postgres 试图在比较之前将字符串转换为日期,大概是基于对格式的一些启发。然而:
mydb=> select '20150526' < '2015-05-27';
-[ RECORD 1 ]
?column? | t
mydb=> select '20150526' < '2015-05-26';
-[ RECORD 1 ]
?column? | t
mydb=> select '20150526' < '2015-05-25';
-[ RECORD 1 ]
?column? …Run Code Online (Sandbox Code Playgroud) 我有一个学生表和一个不同科目的分数表。我想将所有科目的每个学生的 score1 和 score2 相加,然后为每个学生加上奖金。
CREATE TABLE student (
id serial PRIMARY KEY,
name text NOT NULL,
bonus integer NOT NULL,
);
CREATE TABLE score (
id serial PRIMARY KEY,
subject text NOT NULL,
score1 integer NOT NULL,
score2 integer NOT NULL,
student_id integer NOT NULL,
CONSTRAINT s_id FOREIGN KEY (student_id) REFERENCES student (id),
);
Run Code Online (Sandbox Code Playgroud)
连接 score1 和 score2 的查询如下所示:
SELECT st.name, sum(sc.score1 + sc.score2) as total
FROM student st
LEFT JOIN score sc ON sc.student_id = st.id
group by …Run Code Online (Sandbox Code Playgroud) TLDR:我需要一种方法来限制我的选择,以便只返回填充新订单所需的行。
嘿,我正在寻找一种更好的方法来查询下面的简化玩具表。现在我做了一个简单的选择,然后在 Python 中做一些额外的逻辑来处理完全或部分可填充的行。
id |name | category | price | quantity
---+-------+----------+---------+---------
1 |Robby | buy | 45 | 4
2 |Blane | buy | 48 | 5
3 |Shawn | buy | 43 | 10
4 |Valva | sell | 62 | 9
5 |Chris | buy | 42 | 15
Run Code Online (Sandbox Code Playgroud)
如果我以 40 美元的价格插入一个新的卖单,数量 = 12
SELECT id, name, price, category
FROM my_table
WHERE price > 40 AND category = 'buy'
ORDER BY price DESC;
Run Code Online (Sandbox Code Playgroud)
然后在 Python 中,我的逻辑看起来像这样: …
我想找出一个 PostgreSQL 命令,它读取一个表的内容,并返回该表的主键的所有可能的耦合。
像这样的东西:
input_table(ID为主键):
- - - - - - - - - -
ID | label | name
- - - - - - - - - -
11 | aaa | Jenny
24 | bbb | Larry
35 | ccc | Trevor
48 | ddd | Jules
- - - - - - - - - -
Run Code Online (Sandbox Code Playgroud)
查询应该返回主键的所有可能的耦合:
- - - - - - - - - -
ID_left | ID_right
- - - - - - …Run Code Online (Sandbox Code Playgroud) 我喜欢紧凑的 WAL 文件。其实我这样做:
archive_command = 'cp "%p"C:\\%f"'
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
postgresql ×10
aggregate ×1
backup ×1
cast ×1
collation ×1
datatypes ×1
duplication ×1
except ×1
log ×1
partitioning ×1
select ×1
sum ×1
timestamp ×1
timezone ×1
windows ×1