Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दैनिक राजस्व हिस्सेदारी के आधार पर देशों के लिए निर्धारित मूल्य विभाजित करें

एक शुरुआत के रूप में:आपकी क्यूरनेट क्वेरी वह नहीं करती जो आप चाहते हैं। ऐसा लगता है कि आपको वास्तव में fix_costs . पर मासिक विंडो योग की आवश्यकता है . तो मैं यहां से शुरू करूंगा:

select 
    sales_date, 
    country, 
    sum(sales_volume),
    sum(sum(fix_costs)) over(partition by year(sales_date), month(sales_date))
        / day(last_day(sales_date)) 
        as fix_cost_per_day
from sales
group by 1,2;

यह पैदावार:

sales_date | country | sum(sales_volume) | fix_cost_per_day
:--------- | :------ | ----------------: | ---------------:
2020-01-03 | DE      |               500 |          64.5161
2020-01-03 | FR      |               350 |          64.5161
2020-01-03 | NL      |               320 |          64.5161
2020-01-30 | None    |                 0 |          64.5161
2020-02-15 | DE      |               700 |         172.4138
2020-02-15 | FR      |               180 |         172.4138
2020-02-15 | NL      |               420 |         172.4138
2020-02-29 | None    |                 0 |         172.4138
2020-03-27 | DE      |               180 |         129.0323
2020-03-27 | FR      |               970 |         129.0323
2020-03-27 | NL      |               670 |         129.0323
2020-03-31 | None    |                 0 |         129.0323

वहां से, आप उस तर्क को जोड़ सकते हैं जो "प्रति देश दैनिक राजस्व हिस्सेदारी" को ध्यान में रखता है। जैसा कि मैं आपका प्रश्न समझता हूं, वह है:

select 
    sales_date, 
    country, 
    sum(sales_volume),
    sum(sum(fix_costs)) over(partition by year(sales_date), month(sales_date))
        / day(last_day(sales_date)) 
        * sum(sales_volume)
        / sum(sum(sales_volume)) over(partition by sales_date)
        as fix_cost_per_day
from sales
group by 1,2;

रिटर्न:

sales_date | country | sum(sales_volume) | fix_cost_per_day
:--------- | :------ | ----------------: | ---------------:
2020-01-03 | DE      |               500 |      27.57099531
2020-01-03 | FR      |               350 |      19.29969672
2020-01-03 | NL      |               320 |      17.64543700
2020-01-30 | None    |                 0 |             null
2020-02-15 | DE      |               700 |      92.83819629
2020-02-15 | FR      |               180 |      23.87267905
2020-02-15 | NL      |               420 |      55.70291777
2020-02-29 | None    |                 0 |             null
2020-03-27 | DE      |               180 |      12.76143212
2020-03-27 | FR      |               970 |      68.76993974
2020-03-27 | NL      |               670 |      47.50088621
2020-03-31 | None    |                 0 |             null

DB Fiddle पर डेमो

यदि आवश्यक हो, तो आप देश के लिए रिकॉर्ड हटा सकते हैं 'None' क्वेरी को सबक्वेरी में बदलकर और बाहरी क्वेरी में फ़िल्टर करके।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORDER BY या PHP सॉर्ट फ़ंक्शंस के साथ MySQL क्वेरी को सॉर्ट करना

  2. मेरी छवि क्यों नहीं दिख रही है?

  3. MySQL 5.7 और only_full_group_by

  4. libmysqlclient.18.dylib लाइब्रेरी के लिए एक सिमलिंक बनाएं

  5. ग्रहण में mysql ड्राइवर जार फ़ाइल कैसे जोड़ें?