sql - highest percentage growth -


i using postgres 9.6 , pgadmin 4.

my question follows:

which segment had highest percentage growth between 2014 , 2015? how much?

this join between 2 tables

table 1: case_data_order

  • create_timestamp- (timestamp) looks example: 2014-01-01 10:12:20
  • purchase_amount- (bigint) amount purchase
  • id - (numeric)-an id single purchase
  • merchant_id - same below.

table 2: case_data_merchant

  • merchant_category (text) - difference segments are
  • merchant_id-(bigint) id merchant purchase made at

i have tried several times don't know how to it.

select merchant_category ((purchase_amount_2014-purhase_amount_2015)/purchase_amount_2014*100)  (     select sum(purchase_amount) purchase_amount_2015      case_data_order         natural join case_data_merchant      create_timestamp between '2014-01-01' , '2014-12-31'   group merchant_category) data_2015 

natural join (select sum(purchase_amount) purchase_amount_2014 case_data_order natural join case_data_merchant create_timestamp between '2015-01-01' , '2015-12-31 group merchant_category) data_2014;

you first select purchase data per each merchant category in 2014, 2015. join these data , use rank function ranking per each category.

with ranking_data       (         select q1.merchant_category,                 q1.purhase_amount  purchase_amount_2014,                q2.purchase_amount  purchase_amount_2015,                rank() on (order q2.purchase_amount - q1.purhase_amount desc) purchase_rank             (select d.merchant_category,                          sum(d1.purchase_amount) purchaseamount                     case_data_order d1                          inner join case_data_merchant d2                                  on d1.merchant_id = d2.merchant_id                    d1.create_timestamp between                          '2014-01-01' , '2014-12-31'                   group  d2.merchant_category) q1                  inner join (select d.merchant_category,                                     sum(d1.purchase_amount) purchaseamount                                case_data_order d1                                     inner join case_data_merchant d2                                             on d1.merchant_id = d2.merchant_id                               d1.create_timestamp between                                     '2015-01-01' , '2015-12-31'                              group  d2.merchant_category) q2                          on q1.merchant_category = q2.merchant_category         )  select      merchant_category,      case          when purchase_amount_2015 = 0 0         else ((purchase_amount_2015 - purchase_amount_2014) / purchase_amount_2015 * 100 )     end percentage_growth   ranking_data   purchase_rank = 1; 

Comments

Popular posts from this blog

resizing Telegram inline keyboard -

command line - How can a Python program background itself? -

php - "cURL error 28: Resolving timed out" on Wordpress on Azure App Service on Linux -