我有2个表authors
和authors_sales
表authors_sales
每小时更新一次,因此非常大。
我需要创建一个排名,因为我需要加入两个表(authors
包含所有作者数据,而authors_sales
只有销售数字)
如何根据销售人员对其进行排序的作者排名来创建最终表?
公共密钥是:authorId
我尝试使用LEFT JOIN,但我必须做错事,因为我得到了所有authors_sales
表,而不仅仅是最后一个。
正确方向的任何提示都非常赞赏
答案 0 :(得分:0)
如果您要查找销售的汇总数据,则需要通过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中的数据是否已经聚合,这两个中的一个应该为你做...
答案 1 :(得分:0)
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 */