Mysql
 sql >> база данни >  >> RDS >> Mysql

Изключете определени стойности, когато разделяте фиксирана стойност на държави въз основа на дневен дял от приходите

Можете да използвате case изрази, и двата наоколо изчислението и в рамките на прозореца sum :

select 
    sales_date, 
    country, 
    sum(sales_volume),
    case when country <> 'NL'
        then sum(sum(fix_costs)) over(partition by year(sales_date), month(sales_date))
            / day(last_day(sales_date)) 
            * sum(sales_volume)
            / sum(case when country <> 'NL' then sum(sales_volume) else 0 end) over(partition by sales_date)
    else 0
    end as fix_cost_per_day
from sales
group by 1,2;
 

Демо на DB Fiddle :

<предварителна>дата_на_продажба | държава | сума(обем_продажби) | fix_cost_per_day:-------- | :------ | ----------------:| ---------------:2020-01-03 | DE | 500 | 37.950664142020-01-03 | FR | 350 | 26.565464902020-01-03 | NL | 320 | нула 30.01.2020 | Няма | 0 | нула 2020-02-15 | DE | 700 | 137.147335422020-02-15 | FR | 180 | 35.266457682020-02-15 | NL | 420 | нула 29.02.2020 | Няма | 0 | нула 2020-03-27 | DE | 180 | 20.196353442020-03-27 | FR | 970 | 108.835904632020-03-27 | NL | 670 | нула 31.03.2020 | Няма | 0 | нула

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Същите ли са левите външни съединения и левите съединения?

  2. Вложени класове - CustomRowMapper !! Вече не е проблем!! - Част 1

  3. Как да се свържете с MySQL с помощта на PHP

  4. Doctrine не запазва обект с булеви стойности и PDO::ATTR_EMULATE_PREPARES =false в Mysql

  5. Пагинация в nodejs с mysql