我想从基于多行 DISTINCT 的 SELECT 语句创建一个表,但 PostgreSQL 不允许我这样做。
我需要创建一个表格,其中的元素之前是从另一个表格中选择的,并且它们都是唯一的。
这是我的尝试:
CREATE TABLE new_name AS (
SELECT DISTINCT(table.field1, table.field2), table.field1, table.field2,
FROM ...
WHERE ...
);
Run Code Online (Sandbox Code Playgroud)
如果我运行这个语句,PostgreSQL 会说:
错误:列“行”具有伪类型记录
我怎么能解决这个问题?
即使其中一个字段具有空值,我也需要从表中检索数据。下面是一个例子:
Select name, SUM(credit) as credit
From expenses
Where name like 'vendor0%'
and date like '2013%'
Group by name
Order by name asc
Run Code Online (Sandbox Code Playgroud)
此示例检索name并SUM(credit)只有当credit具有价值。name即使credit根本没有任何价值,我也需要从中检索所有内容。
这可能吗?
我有一个名为( conntrack )的数据库,其中包含未知数量的表。我有一个静态表“tabidx”,其中有一列“日期”。
下表是静态的,其名称为 tabidx,提供对其他表的引用:
tabidx (table):
+------------+
| date |
+------------+
| 2015-04-25 |
| 2015-04-26 |
| 2015-04-27 |
| 2015-04-28 |
| 2015-04-29 |
+------------+
Run Code Online (Sandbox Code Playgroud)
以下是“tabidx”“date”中引用的表的示例:
2015-04-25 (table):
+---------------------------------------------+
| time | username | srcip | scport |
+---------------------------------------------+
| 19:20:00 | L001000 | 10.10.10.1 | 1304 |
| 19:20:00 | L001001 | 10.10.10.2 | 1640 |
| 19:20:01 | L001002 | 10.10.10.3 | 2001 |
+---------------------------------------------+
2015-04-26 (table):
+---------------------------------------------+
| time | username | srcip | …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 中,我的逻辑看起来像这样: …
我有挑战!我需要从 4 个不同服务器的 4 个不同表中进行选择。
例子:
Select * from server1.tableS1.sys.view
Select * from server2.tableS2.sys.view
Select * from server3.tableS3.sys.view
Select * from server4.tableS4.sys.view
Run Code Online (Sandbox Code Playgroud)
如何在同一个查询中进行选择?
在 postgresql 中使用 ceil() 时,我发现它有一些奇怪的行为,请参阅 SQL :
Select
*,
ceil( (550*0.5)/100 ),
ceil( (58*5)/100 ),
FROM
XYZ
Run Code Online (Sandbox Code Playgroud)
如果我专注于 ceil 函数的输出,那就很奇怪了:
如果第二条语句接近更大的整数 3 ,为什么它返回 2 ?
我继承了一些这样的代码:
SELECT
Col_1,
Col_2 Col_2,
Col_3
...
Run Code Online (Sandbox Code Playgroud)
别名Col_2实际上有什么作用,还是完全没有必要?
我正在使用 Postgres 9.5。我有一个表,其中有一列记录 URL。有时 URL 具有查询字符串,有时则没有。我想提取 URL,减去任何查询字符串,所以我想出了:
select substring(url, 0, case position('?' in url) when 0 then length(url)+1 else position('?' in url) end)
from article;
Run Code Online (Sandbox Code Playgroud)
这看起来有点罗嗦,我想知道是否有更简洁的方法来做到这一点。我的表列是类型TEXT。
从表中获取第二高值已经解决了很多次,但我正在寻找每组中的第二高值。
鉴于此表:
+----+-----+
| A | 10 |
| A | 20 |
| A | 35 | <-- This record
| A | 42 |
| B | 12 |
| B | 21 | <-- This record
| B | 33 |
| C | 14 |
| C | 23 |
| C | 38 |
| C | 41 | <-- This record
| C | 55 |
+----+-----+
Run Code Online (Sandbox Code Playgroud)
我想获得标记的行。
伪代码:
select col_a, penultimate(col_b) …Run Code Online (Sandbox Code Playgroud) 我有一个表 ,employee其中一列是last_name,它存储字符串。
使用 SELECT 查询,我试图获取last_name按字母顺序排序的列,作为一列,然后再次获取另一列,last_name这次按相反的字母顺序排序。
期望的结果看起来像
+-----------------+----------------+
| last name | last name |
+-----------------+----------------+
| Apple | Xylophone |
+-----------------+----------------+
Run Code Online (Sandbox Code Playgroud)
我努力了
SELECT a.last_name, b.last_name
FROM employee A
LEFT JOIN employee B
ON a.last_name = b.last_name
ORDER BY a.last_name, b.last_name DESC;
Run Code Online (Sandbox Code Playgroud)
当然,这是行不通的,因为它按last_name按字母顺序对两列进行排序,甚至没有达到其他顺序条件,因为语法指定n仅当某些行在条件下相等时才使用条件n-1。
在我的脑海里,我认为这就像
SELECT last_name
FROM employee
ORDER BY last_name;
Run Code Online (Sandbox Code Playgroud)
和
SELECT last_name
FROM employee
ORDER BY last_name DESC;
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将两者结合起来。当我联合这两个查询时,我得到了正确的数据,但它是以两列连接成一列的形式,当我需要两列保持不同时。
我在这里尝试使用 JOIN,这完全是在黑暗中进行的,因为我从未见过这样的语法:
(SELECT a.last_name
FROM employee a
ORDER …Run Code Online (Sandbox Code Playgroud)