我想从不在数据库中的enumaration中进行选择.
例如,SELECT id FROM my_table
返回值1,2,3我想要显示1 -> 'chocolate', 2 -> 'coconut', 3 -> 'pizza'
等SELECT CASE
工作但是太复杂并且难以概述许多值.我想到了类似的东西
SELECT id, array['chocolate','coconut','pizza'][id] FROM my_table
Run Code Online (Sandbox Code Playgroud)
但我无法成功使用数组.有一个简单的解决方案吗?所以这是一个简单的查询,而不是plpgsql脚本或类似的东西.
我有以下查询:
select
title,
( stock_one + stock_two ) as global_stock
from product
order by
global_stock = 0,
title;
Run Code Online (Sandbox Code Playgroud)
在PostgreSQL 8.1.23中运行它我收到此错误:
查询失败:错误:列"global_stock"不存在
有人可以帮我把它投入使用吗?我首先需要可用的项目,然后是不可用的项目.非常感谢!
在我的Postgres数据库表中,我可以找到cap_cs137
按日期顺序排列的最后20个条目:
select cap_cs137 FROM capintec ORDER BY cap_date DESC LIMIT 20;
Run Code Online (Sandbox Code Playgroud)
我也可以得到平均值:
select avg(cap_cs137) FROM capintec LIMIT 20;
Run Code Online (Sandbox Code Playgroud)
但是,如何组合上述语句以按日期顺序获取最近20个条目的平均值?
我们有一个过时的RHEL 5.8服务器,它支持Postgres 8.1.23,因此不允许使用WITH
查询.
我有三个控制产品,颜色和尺寸的桌子.产品可以有或没有颜色和大小.颜色可以或不具有尺寸.
product color size
------- ------- -------
id id id
unique_id id_product (FK from product) id_product (FK from version)
stock unique_id id_version (FK from version)
title stock unique_id
stock
Run Code Online (Sandbox Code Playgroud)
unique_id
所有表中都存在的列是一个串行类型(自动增量),它的计数器与三个表共享,基本上它作为它们之间的全局唯一ID.
它工作正常,但我想在我必须选择一些基于的字段时提高查询性能unique_id
.
因为我不知道unique_id
我在找什么,我正在使用UNION
,如下所示:
select title, stock
from product
where unique_id = 10
UNION
select p.title, c.stock
from color c
join product p on c.id_product = p.id
where c.unique_id = 10
UNION
select p.title, s.stock
from size s
join product p on s.id_product = p.id …
Run Code Online (Sandbox Code Playgroud) 我有一个滑动窗口的问题.具体来说,我不知道我的窗口应该从哪里开始以及应该在哪里结束.我知道我的间隔/窗口的大小.
我需要找到窗口的开始/结束,以提供最佳(或最差,取决于您如何看待它)的情况.
这是一个示例数据集:
value | tstamp
100 | 2013-02-20 00:01:00
200 | 2013-02-20 00:02:00
300 | 2013-02-20 00:03:00
400 | 2013-02-20 00:04:00
500 | 2013-02-20 00:05:00
600 | 2013-02-20 00:06:00
500 | 2013-02-20 00:07:00
400 | 2013-02-20 00:08:00
300 | 2013-02-20 00:09:00
200 | 2013-02-20 00:10:00
100 | 2013-02-20 00:11:00
Run Code Online (Sandbox Code Playgroud)
让我说我知道我的间隔需要5分钟.所以,我需要知道5分钟间隔中包含的值和时间戳,其中"值"的总和最高.在上面的例子中,从'2013-02-20 00:04:00'到'2013-02-20 00:08:00'的行会给我400 + 500 + 600 + 500 + 400 = 2400的总和,这是该表中超过5分钟的最高值.
如果需要,我不反对使用多个表.但我正试图找到一个"最佳案例场景"间隔.结果可以是任何一种方式,只要它们净化间隔.如果我在该间隔内获得所有数据点,它仍然有效.如果我得到起点和终点,我也可以使用它们.
我发现了SQL的几个滑动窗口问题,但是没有找到窗口大小是已知因素的任何地方,并且起点未知.