Vaibhav
Vaibhav

Reputation: 107

How to select rows where numbers have increased from previous record in SQL

I have a table with 2 columns date and sales, from this I need to pick up the dates on which sales have increased from previous date. Below is a sample table

Date          Sales
-------------------
1/8/2020       10
1/9/2020       12
1/10/2020       8
1/11/2020       7
1/12/2020      13

Output should be as below:

Date
---------
1/9/2020
1/12/2020

Query:

Select data 
from table 
where sales > sales of previous day

Upvotes: 1

Views: 58

Answers (3)

DatabaseCoder
DatabaseCoder

Reputation: 2032

You can use self join for this requirement.

select
    A.date
from TableA as A
inner join TableA as B on B.date = (A.date - interval '1 day') 
     and A.sales > B.sales;

Upvotes: 0

mkRabbani
mkRabbani

Reputation: 16908

If you have gaps in days, you can consider this following logic with sub query-

DEMO HERE

WITH CTE AS
(
    SELECT Date,Sales, 
    (
        SELECT Sales 
        FROM your_table 
        WHERE Date = (SELECT MAX(Date) FROM your_table WHERE Date < A.Date)
    ) Last_day_sales
    FROM your_table A
)

SELECT Date,Sales 
FROM CTE 
WHERE Sales > Last_day_sales*emphasized text*

Upvotes: 0

VBoka
VBoka

Reputation: 9083

You can use LAG to calculate this:

with cte 
as (select date_c
           , sales
           , lag(sales) over (order by date_c) sales2 
from Test)
select date_c, sales from cte
where sales > sales2;

Here is a DEMO

Upvotes: 1

Related Questions