选择客户的最后5个销售?

时间:2012-12-10 23:38:01

标签: sql

我有一个名为sales的简单表格,其中包含

createdon, saleid, customerid 

其他表我有customer表格列

customerid, name, etc..

现在我需要客户的最后5次销售,

在另一个名为scanned的表中,我有

scannedid,saleid,customerid

我相信我需要客户的最后5个salesid才能获得客户 在他们的最后5个销售中扫描(销售不是相同的日子,例如一个客户在星期六星期一访问,但其他星期二和星期四访问,但这个信息对于这个例子并不重要)

我真正的问题是

如何获取过去5次销售中扫描过的客户ID?

为此我相信我确实需要查询以获得客户的最后5个salesid 例如。我有3个客户,那么我需要最后5个销售,customer1,customer2和customer3,然后我将有15个saleid返回

1 个答案:

答案 0 :(得分:1)

客户端,我认为你的意思是customerid。我想你想要销售的前五个记录,基于创建日期的降序。确切的语法取决于数据库。这是一种方式:

select top 5 customerid
from sales s
order by createdon desc

另一种方式:

select customerid
from sales s
order by createdon desc
limit 5

另一种方式:

select *
from (select customerid, rownum as seqnum
      from sales
      order by createdon
     ) s
where seqnum <= 5

既然你已经澄清了你想要的东西,那很简单:

select *
from (select s.*,
             row_number() over (partition by customerid order by created on desc) as seqnum
      from sales s
     ) s
where seqnum <= 5
相关问题