我有一个查询,如:
SELECT a.id, a.name, json_agg(b.*) as "item"
FROM a
JOIN b ON b.item_id = a.id
GROUP BY a.id, a.name;
Run Code Online (Sandbox Code Playgroud)
如何选择在列b,所以我没有b.item_id在JSON对象?
我读过关于ROW,但它返回一个 JSON 对象,如:
{"f1": "Foo", "f2": "Bar"}
Run Code Online (Sandbox Code Playgroud)
一旦获取它以匹配正确的列键,我将需要重新映射 JSON 对象。我想避免这种情况并保留原始列名。
我正在运行 postgresql 9.3.4。我有一个包含 3 个字段的表:
id name addr
--- ---- ----
1 n1 ad1
2 n2 ad2
...
Run Code Online (Sandbox Code Playgroud)
我需要将数据移动到包含以下字段的新表:
id data
--- ----
1 {'name': 'n1', 'addr': 'ad1'}
2 {'name': 'n2', 'addr': 'ad2'}
...
Run Code Online (Sandbox Code Playgroud)
row_to_json对我来说不是解决方案,因为它也SELECT t.id, row_to_json(t) as data FROM (select id, name, addr from myt) t增加id了结果。有没有办法在我的数据字段中选择我需要的字段(名称和地址)?
我有一个表,其中包含两列整型数组的排列/组合,第三列包含一个值,如下所示:
CREATE TABLE foo
(
perm integer[] NOT NULL,
combo integer[] NOT NULL,
value numeric NOT NULL DEFAULT 0
);
INSERT INTO foo
VALUES
( '{3,1,2}', '{1,2,3}', '1.1400' ),
( '{3,1,2}', '{1,2,3}', '0' ),
( '{3,1,2}', '{1,2,3}', '1.2680' ),
( '{3,1,2}', '{1,2,3}', '0' ),
( '{3,1,2}', '{1,2,3}', '1.2680' ),
( '{3,1,2}', '{1,2,3}', '0' ),
( '{3,1,2}', '{1,2,3}', '0' ),
( '{3,1,2}', '{1,2,3}', '1.2680' ),
( '{3,1,2}', '{1,2,3}', '0.9280' ),
( '{3,1,2}', '{1,2,3}', '0' ),
( '{3,1,2}', '{1,2,3}', '1.2680' ),
( …Run Code Online (Sandbox Code Playgroud) 我有下表:
NAME
Alex
Bob
Bob
Tim
Alex
Roger
Run Code Online (Sandbox Code Playgroud)
我需要生产以下内容:
Name Count Percentage
Alex 2 33%
Bob 2 33%
Roger 1 16.6%
Tim 1 16.6%
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始。我可以对计数进行初始查询,这很简单。