Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Loại trừ các giá trị nhất định khi chia giá trị cố định cho các quốc gia dựa trên chia sẻ doanh thu hàng ngày

Bạn có thể sử dụng case biểu thức, cả xung quanh tính toán và bên trong cửa sổ 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;

Bản trình diễn trên DB Fiddle :

sales_date | country | sum(sales_volume) | fix_cost_per_day
:--------- | :------ | ----------------: | ---------------:
2020-01-03 | DE      |               500 |      37.95066414
2020-01-03 | FR      |               350 |      26.56546490
2020-01-03 | NL      |               320 |             null
2020-01-30 | None    |                 0 |             null
2020-02-15 | DE      |               700 |     137.14733542
2020-02-15 | FR      |               180 |      35.26645768
2020-02-15 | NL      |               420 |             null
2020-02-29 | None    |                 0 |             null
2020-03-27 | DE      |               180 |      20.19635344
2020-03-27 | FR      |               970 |     108.83590463
2020-03-27 | NL      |               670 |             null
2020-03-31 | None    |                 0 |             null


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối với cơ sở dữ liệu mysql qua SSH thông qua PHP

  2. Có thể NHÓM THEO nhiều cột bằng MySQL không?

  3. Phân vùng bảng cơ sở dữ liệu trong MySQL

  4. Cách CHÈN nếu hàng không tồn tại (UPSERT) trong MySQL

  5. Cách đếm các mục trong danh sách MySQL được phân tách bằng dấu phẩy