Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyklucz niektóre wartości podczas dzielenia stałej wartości na kraje na podstawie dziennego udziału w przychodach

Możesz użyć case wyrażenia, oba w pobliżu obliczenia i w okno 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;
 

Demo na DB Fiddle :

data_sprzedaży | kraj | suma(wielkość_sprzedaży) | fix_cost_per_day:--------- | :------ | ----------------:| ---------------:2020-01-03 | DE | 500 | 37.950664142020-01-03 | FR | 350 | 26.565464902020-01-03 | Holandia | 320 | brak 2020-01-30 | Brak | 0 | brak 2020-02-15 | DE | 700 | 137.147335422020-02-15 | FR | 180 | 35.266457682020-02-15 | Holandia | 420 | brak 2020-02-29 | Brak | 0 | brak 2020-03-27 | DE | 180 | 20.196353442020-03-27 | FR | 970 | 108.835904632020-03-27 | Holandia | 670 | brak 2020-03-31 | Brak | 0 | brak

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP + kolejka MySQL

  2. Najlepsze praktyki dotyczące tworzenia indeksów w tabelach MySQL — kompilacja indeksu kroczącego

  3. 2 sposoby konwersji między liczbą dziesiętną a szesnastkową w MySQL

  4. PHP 7.2.2 + mysql 8.0 PDO daje:metodę uwierzytelniania nieznaną klientowi [caching_sha2_password]

  5. Warunkowe MySQL ORDER BY ASC/DESC dla kolumny daty