Advertisement
Guest User

Untitled

a guest
Feb 18th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  1. select
  2. user_id,
  3. COALESCE(pt_inn,'') pt_inn,
  4. COALESCE(pt_kpp,'') pt_kpp,
  5. case when (sum (COALESCE(amount,0)) - sum(COALESCE(sum_out,0))) <0 then 0 else (sum (COALESCE(amount,0)) - sum(COALESCE(sum_out,0))) end balance
  6. from (with start_balance
  7. as (
  8. select
  9. user_id,
  10. payment_timestamp start_date,
  11. COALESCE(lead(payment_timestamp,1) over (partition by user_id,(json_array_elements(processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'inn') order by payment_timestamp),date '4000-01-01') end_date,
  12. json_array_elements(processed_transactions)->'gatewayInfo'->>'gatewayId' pt_gatewayId,
  13. json_array_elements(processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'inn' pt_inn,
  14. json_array_elements(processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'kpp' pt_kpp,
  15. sum(amount) over(partition by user_id,(json_array_elements(processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'inn') order by payment_timestamp) sum_run,
  16. amount
  17. from payments
  18. where subsystem_id='PromoCode'
  19. -- and payment_status in ('Succeeded','Unknown')
  20. and transaction_type='Credit'
  21. and tenant_id='Evotor'
  22. and PAYMENT_ID IN (select code from evo_codes )
  23. ),
  24. sum_payments
  25. as (
  26. select
  27. start_balance.start_date,
  28. start_balance.end_date,
  29. start_balance.user_id,
  30. payments.payment_timestamp,
  31. json_array_elements(payments.processed_transactions)->'gatewayInfo'->>'gatewayId' pt_gatewayId,
  32. json_array_elements(payments.processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'inn' pt_inn,
  33. json_array_elements(payments.processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'kpp' pt_kpp,
  34. cast(json_array_elements(payments.processed_transactions)->>'processedPaymentAmount' as decimal(20,2)) pt_amount
  35. -- sum(payments.amount) amount
  36. from payments
  37. left join start_balance
  38. on start_balance.user_id = payments.user_id
  39. and start_balance.start_date <= payments.payment_timestamp
  40. and start_balance.end_date > payments.payment_timestamp
  41. where start_balance.user_id = payments.user_id
  42. AND payments.tenant_id = 'Evotor'
  43. AND payments.transaction_type = 'Charge'
  44. AND payments.payment_status NOT IN ('Failed','Cancelled')
  45. AND payments.subsystem_id NOT IN ('promo1million')
  46. group by start_balance.start_date,
  47. start_balance.end_date,
  48. start_balance.user_id,
  49. json_array_elements(payments.processed_transactions)->'gatewayInfo'->>'gatewayId',
  50. json_array_elements(payments.processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'inn',
  51. json_array_elements(payments.processed_transactions) -> 'gatewayInfo' -> 'gatewayProperties' ->> 'kpp',
  52. cast(json_array_elements(payments.processed_transactions)->>'processedPaymentAmount' as decimal(20,2)),
  53. payments.payment_timestamp
  54. )
  55. select
  56. start_balance.user_id,
  57. start_balance.start_date,
  58. start_balance.end_date,
  59. start_balance.pt_inn,
  60. start_balance.pt_kpp,
  61. --start_balance.sum_run,
  62. start_balance.amount,
  63. sum(sum_payments.pt_amount) sum_out
  64. from start_balance
  65. left join sum_payments on start_balance.user_id = sum_payments.user_id
  66. and start_balance.start_date = sum_payments.start_date
  67. and start_balance.end_date = sum_payments.end_date
  68. and sum_payments.pt_gatewayId = 'BONUS_ACCOUNT'
  69. and COALESCE(start_balance.pt_inn,'') = COALESCE(sum_payments.pt_inn,'')
  70. and COALESCE(start_balance.pt_kpp,'') = COALESCE(sum_payments.pt_kpp,'')
  71. group by
  72. start_balance.user_id,
  73. start_balance.start_date,
  74. start_balance.end_date,
  75. start_balance.pt_inn,
  76. start_balance.pt_kpp,
  77. start_balance.sum_run,
  78. start_balance.amount) as temp
  79. group by
  80. user_id,
  81. COALESCE(pt_inn,''),
  82. COALESCE(pt_kpp,'')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement