Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 博士后参加最长日期_Sql_Postgresql_Inner Join_Aggregate - Fatal编程技术网

Sql 博士后参加最长日期

Sql 博士后参加最长日期,sql,postgresql,inner-join,aggregate,Sql,Postgresql,Inner Join,Aggregate,我需要构造一个联接,该联接将为每个产品提供最新的价格。为了本例的目的,我大大简化了表结构,每个表的行数将以百万计。我以前在这方面的尝试并不十分有效 最简单的方法是使用行数功能 select p.name,t.amount as latest_price from (select p.*, row_number() over(partition by product_id order by create_date desc) as rn from prices p) t join

我需要构造一个联接,该联接将为每个产品提供最新的价格。为了本例的目的,我大大简化了表结构,每个表的行数将以百万计。我以前在这方面的尝试并不十分有效


最简单的方法是使用
行数
功能

select p.name,t.amount as latest_price
from (select p.*, row_number() over(partition by product_id order by create_date desc) as rn 
      from prices p) t 
join products p on p.id = t.product_id
where rn = 1

在PostgreSQL中,您可以尝试在降序
create\u date
order中仅获取每个产品id的第一行

SELECT DISTINCT ON (products.id) products.*, prices.* 
FROM products 
JOIN prices 
  ON products.id = prices.product_id 
ORDER BY products.id, create_date DESC

(当然,除说明性目的外,您当然应该选择所需的确切列)

问题是否是因为您在编写查询以获得正确结果时遇到问题?或者您在以高效的方式编写查询时遇到了问题?@MarkHildreth只要数据集很小,我就可以整天编写“运行”查询。一旦我尝试在我的大型数据库上运行这些相同的子查询联接,它就永远不会返回结果。所以,是的,问题肯定是效率。@bopritchard在这种情况下,您应该提供更多信息。至少,您应该给出一个您尝试运行的查询,以及对结果的解释。您试图运行的表的模式和索引列表也将很有用。我还建议在表上运行分析/真空,然后再次尝试您的查询;非常感谢。