sni*_*tko 4 sorting postgresql
我们的表中有许多字段offers用于确定报价的价格,但是价格的一个关键组成部分是从外部 API 获取的汇率。我们仍然需要按实际当前价格对报价进行排序。
例如,假设我们在offers表中有两列:exchange和premium_percentage。的exchange是源的汇率,所述外部的请求将被做出的名称。premium_percentage由用户设置。在这种情况下,无法在不知道汇率的情况下按当前价格对报价进行排序,而且可能会因exchange列中的内容而异。
怎么办呢?有没有办法让 Postgres 计算当前价格,然后根据它对报价进行排序?
Cra*_*ger 11
SELECT
product_id,
get_current_price(exchange) * (premium_percentage::float/100 + 1) AS price
FROM offers
ORDER BY 2;
Run Code Online (Sandbox Code Playgroud)
请注意ORDER BY 2按第二个序数列排序。
您可以改为在ORDER BY子句中重复要作为排序依据的表达式。但这可能会导致多重评估。
或者您可以将其全部包装在子查询中,以便您可以命名输出列并在其他子句中引用它们。
SELECT product_id, price
FROM
(
SELECT
product_id,
get_current_price(exchange) * (premium_percentage::float/100 + 1)
FROM offers
) product_prices(product_id, price)
ORDER BY price;
Run Code Online (Sandbox Code Playgroud)