SQL Intermediate Question 4 - lag function and finding difference for each day
HTML-код
- Опубликовано: 10 окт 2023
- Question - Write a query to get the difference of amount between apples & oranges for each day.
Table Creation Query :-
drop table if exists sales
CREATE TABLE sales (
Sales_date DATE,
Fruits VARCHAR(255),
sold_num INT
);
INSERT INTO sales (Sales_date, Fruits, sold_num)
VALUES
('2020-05-01', 'apples', 10),
('2020-05-01', 'oranges', 8),
('2020-05-02', 'apples', 15),
('2020-05-02', 'oranges', 15),
('2020-05-03', 'apples', 20),
('2020-05-03', 'oranges', 0),
('2020-05-04', 'apples', 15),
('2020-05-04', 'oranges', 16);
select * from sales
#sql #sqldeveloper #dataanalytics #interviewquestions
badhiya explanation bhai. Aur badhiya badhiya sql questions lao channel pe. 🙏🙏🙏🙏🙏🙏
select sales_date,
sum(case when fruits='apples' then sold_num end) apple_count,
sum(case when fruits='oranges' then sold_num end) orange_count,
sum(case when fruits='apples' then sold_num end) -
sum(case when fruits='oranges' then sold_num end) diff_count
from sales group by sales_date
with cte as(select *,lag(sold_num) over(partition by sales_date order by sales_date) as no_of_fruits,
row_number() over(partition by sales_date order by sales_date desc) as rn from sales),
cte2 as (select *,case when rn=2 then abs(sold_num-no_of_fruits) else False end as otpt from cte)
select * from cte2
where otpt != 0
with cte as (select *,
lead(Fruits) over(partition by Sales_date order by sales_date) le_fu111,
lead(sold_num) over(partition by Sales_date order by sales_date) le_fu11
from sales)
select *, sold_num-le_fu11 from cte
where le_fu11 is not null;