繁体   English   中英

从另一个表中选择相应的记录,但仅选择最后一个

[英]Select corresponding records from another table, but just the last one

我有2个表authorsauthors_sales

该表authors_sales每小时都会更新,因此非常大。

我需要创建一个排名,为此我需要将两个表都authors_sales在一起( authors拥有所有作者数据,而authors_sales仅具有销售数字)

如何根据作者按销售顺序排列最终排名表?

公用密钥为: authorId

我尝试了LEFT JOIN,但是我一定做错了,因为我得到了所有authors_sales表,而不仅仅是最后一个。

朝正确方向的任何提示都值得赞赏

如果要查找销售的汇总数据,则需要按authorId分组以合并表。 就像是...

select authors.author_id, SUM(author_sales.sale_amt) as total_sales
from authors
inner join author_sales on author_sales.author_id = authors.author_id
group by authors.author_id
order by total_sales desc

但是(如果您是上述情况还是下一个情况,我无法区分您的问题),如果您仅查找author_sales表的最大值(如果该表中的数据已经聚合),则可以加入一个对author_sales的嵌套查询,例如...

select author.author_id, t.sales from authors
inner join 
  (select top 1 author_sales.author_id, 
    author_sales.sale_amt, 
    author_sales.some_identifier 
  from author_sales order by some_identifier desc) t
on t.author_id = author.author_id
order by t.sales desc

some_identifier将是您如何确定哪条记录是author_sales的最新记录,无论是插入记录的时间戳还是增加的主键(但是已设置)。 取决于author_sales中的数据是否已经聚合,这两个之一应该为您完成...

select a.*, sum(b.sales)
from authors as a
inner join authors_sales as b 
  using authorId
group by b.authorId
order by sum(b.sales) desc;


/* assuming column sales = total for each row in authors_sales */

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM