Предполагая, что каждый SKU появляется каждый день, вы можете использовать оконные функции (доступны в MySQL 8.0) и агрегирование:
select
date,
sum(stock < coalesce(lag_stock, 0)) decrease,
sum(stock > coalesce(lag_stock, 0)) increase
from (
select t.*, lag(stock) over(partition by sku order by date) lag_stock
from mytable t
) t
group by date
Мы можем использовать дополнительное условие для фильтрации SKU, которые имеют пробелы:
select
date,
sum(stock < coalesce(lag_stock, 0)) decrease,
sum(stock > coalesce(lag_stock, 0)) increase
from (
select
t.*,
lag(stock) over(partition by sku order by date) lag_stock,
lag(date) over(partition by sku order by date) lag_date
from mytable t
) t
where date = lag_date + interval 1 day or lag_date is null
group by date