Advertisement
Guest User

Untitled

a guest
Jan 17th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. with "terminal_locations" as (
  3.     select
  4.     p.public_id as terminal_public_id,
  5.     p.id as terminal_id,
  6.     l.id as location_id,
  7.     case when array_agg(pg.id) && array[7, 11, 23, 26]::bigint[] then 'shop_terminal' else 'self_serviced' end as terminal_type,
  8.     l."name" as location_name,
  9.     l.street_address as address,
  10.     l.postal_code as zip_code,
  11.     l.city as city
  12.     from "PrincipalMachine" as pm
  13.     join "Principal" as p on pm.id = p.id
  14.     join "PrincipalGroupMapping" as pgm on pgm.principal_id = p.id
  15.     join "PrincipalGroup" as pg on pg.id = pgm.principal_group_id
  16.     join "PlacementMachineLocationLatest" as pmll on pmll.machine_id = pm.id
  17.     left outer join "PlacementMachineLocation" as pml on pml.machine_id = pm.id
  18.     join "Location" as l on l.id = pml.location_id
  19.     where pml.event_ts >= date_trunc('year', timestamp '2019-01-01') and pml.event_ts < date_trunc('year', timestamp '2020-01-01')
  20.     group by p.public_id, p.id, l.id
  21. ),
  22. "betting_sums" as (
  23. select
  24.     terminal_locations.terminal_public_id,
  25.     terminal_locations.location_id,
  26.     bet_sums.total_sales,
  27.     (
  28.         coalesce(settled_bets_sums.settled_bet_stake, 0) - coalesce(rollbacked_bets_sums.rollbacked_bet_stake, 0) + coalesce(cashed_out_bets_sums.cashed_out_bet_stake)
  29.     )
  30.     -
  31.     (
  32.         coalesce(settled_bets_sums.paid_out_amount, 0) + coalesce(rollbacked_bets_sums.rollback_amount, 0) + coalesce(cashed_out_bets_sums.cash_out_amount, 0)
  33.     ) as total_bsi
  34.     from terminal_locations
  35.     full join (
  36.         select
  37.             terminal_locations.terminal_public_id,
  38.             terminal_locations.location_id,
  39.             count(distinct bs.id) as total_sales,
  40.             sum(bb.stake) as total_bets_stake
  41.         from terminal_locations
  42.         right join "ActionContext" as ac on ac.location_id = terminal_locations.location_id
  43.         join "ActionContextPrincipalMapping" as acpm on acpm.context_id = ac.id and acpm.principal_id = terminal_locations.terminal_id
  44.         join "BettingSale" as bs on bs.context_id = ac.id
  45.         right join "BettingBet" as bb on bb.sale_id = bs.id
  46.         where bs.created_time >= '2019-01-01'::timestamptz and bs.created_time < '2020-01-01'::timestamptz
  47.         group by
  48.             terminal_locations.terminal_public_id,
  49.             terminal_locations.location_id
  50.     ) as bet_sums on bet_sums.terminal_public_id = terminal_locations.terminal_public_id and bet_sums.location_id = terminal_locations.location_id
  51.     full join (
  52.         select
  53.             terminal_locations.terminal_public_id,
  54.             terminal_locations.location_id,
  55.             sum(bb.stake) as settled_bet_stake,
  56.             sum(bbp.payout_amount) as paid_out_amount
  57.         from terminal_locations
  58.         right join "ActionContext" as ac on ac.location_id = terminal_locations.location_id
  59.         join "ActionContextPrincipalMapping" as acpm on acpm.context_id = ac.id and acpm.principal_id = terminal_locations.terminal_id
  60.  
  61.         join "BettingSale" as bs on bs.context_id = ac.id
  62.         right join "BettingBet" as bb on bb.sale_id = bs.id
  63.         join "BettingBetPayout" as bbp on bbp.bet_id = bb.id
  64.         where bs.created_time >= '2019-01-01'::timestamptz and bs.created_time < '2020-01-01'::timestamptz
  65.         and bbp.cause = 'BET_SETTLEMENT'::"BettingBetPayoutCause"
  66.         group by
  67.             terminal_locations.terminal_public_id,
  68.             terminal_locations.location_id
  69.     ) as settled_bets_sums on settled_bets_sums.terminal_public_id = terminal_locations.terminal_public_id and settled_bets_sums.location_id = terminal_locations.location_id
  70.     full join (
  71.         select
  72.             terminal_locations.terminal_public_id,
  73.             terminal_locations.location_id,
  74.             sum(bb.stake) as rollbacked_bet_stake,
  75.             sum(bbp.payout_amount) as rollback_amount
  76.         from terminal_locations
  77.         right join "ActionContext" as ac on ac.location_id = terminal_locations.location_id
  78.         join "ActionContextPrincipalMapping" as acpm on acpm.context_id = ac.id and acpm.principal_id = terminal_locations.terminal_id
  79.  
  80.         join "BettingSale" as bs on bs.context_id = ac.id
  81.         right join "BettingBet" as bb on bb.sale_id = bs.id
  82.         join "BettingBetPayout" as bbp on bbp.bet_id = bb.id
  83.         where bs.created_time >= '2019-01-01'::timestamptz and bs.created_time < '2020-01-01'::timestamptz
  84.         and bbp.cause = 'BET_SETTLEMENT_ROLLBACK'::"BettingBetPayoutCause"
  85.         group by
  86.             terminal_locations.terminal_public_id,
  87.             terminal_locations.location_id
  88.     ) as rollbacked_bets_sums on rollbacked_bets_sums.terminal_public_id = terminal_locations.terminal_public_id and rollbacked_bets_sums.location_id = terminal_locations.location_id
  89.     full join (
  90.         select
  91.             terminal_locations.terminal_public_id,
  92.             terminal_locations.location_id,
  93.             sum(bb.stake) as cashed_out_bet_stake,
  94.             sum(bbp.payout_amount) as cash_out_amount
  95.         from terminal_locations
  96.         right join "ActionContext" as ac on ac.location_id = terminal_locations.location_id
  97.         join "ActionContextPrincipalMapping" as acpm on acpm.context_id = ac.id and acpm.principal_id = terminal_locations.terminal_id
  98.  
  99.         join "BettingSale" as bs on bs.context_id = ac.id
  100.         right join "BettingBet" as bb on bb.sale_id = bs.id
  101.         join "BettingBetPayout" as bbp on bbp.bet_id = bb.id
  102.         where bs.created_time >= '2019-01-01'::timestamptz and bs.created_time < '2020-01-01'::timestamptz
  103.         and bbp.cause = 'BET_CASH_OUT'::"BettingBetPayoutCause"
  104.         group by
  105.             terminal_locations.terminal_public_id,
  106.             terminal_locations.location_id
  107.     ) as cashed_out_bets_sums on cashed_out_bets_sums.terminal_public_id = terminal_locations.terminal_public_id and cashed_out_bets_sums.location_id = terminal_locations.location_id
  108.  
  109. ),
  110. "virtual_sums" as (
  111. select
  112.         terminal_locations.terminal_public_id,
  113.         terminal_locations.location_id,
  114.         virtual_sums.total_sales as total_sales,
  115.         virtual_sums.virtual_bsi as total_bsi
  116.     from terminal_locations
  117.     full join (
  118.         select
  119.             terminal_locations.terminal_public_id,
  120.             terminal_locations.location_id,
  121.             (settled_virtual_bet_sums.bet_stake_sum - settled_virtual_bet_sums.bet_win_sum) as virtual_bsi,
  122.             settled_virtual_bet_sums.sales_count as total_sales
  123.         from terminal_locations
  124.         full join (
  125.             select
  126.                 terminal_locations.terminal_public_id,
  127.                 terminal_locations.location_id,
  128.                 sum(vbb.stake) as bet_stake_sum,
  129.                 sum(vbbr.actual_win) as bet_win_sum,
  130.                 count(distinct vbs.id) as sales_count
  131.             from "VirtualBettingSale" as vbs
  132.             join "ActionContext" as ac on ac.id = vbs.context_id
  133.             join "ActionContextPrincipalMapping" as acpm on acpm.context_id = ac.id
  134.  
  135.             join terminal_locations on terminal_locations.location_id = ac.location_id
  136.             right join "VirtualBettingBet" as vbb on vbb.sale_id = vbs.id
  137.             join "VirtualBettingBetResult" as vbbr on vbbr.bet_id = vbb.id
  138.             where vbs.created_time >= '2019-01-01'::timestamptz and vbs.created_time < '2020-01-01'::timestamptz
  139.             and acpm.principal_id = terminal_locations.terminal_id
  140.             group by
  141.                 terminal_locations.terminal_public_id,
  142.                 terminal_locations.location_id
  143.  
  144.         ) as settled_virtual_bet_sums on settled_virtual_bet_sums.location_id = terminal_locations.location_id and settled_virtual_bet_sums.terminal_public_id = terminal_locations.terminal_public_id
  145.     ) as virtual_sums on virtual_sums.location_id = terminal_locations.location_id and virtual_sums.terminal_public_id = terminal_locations.terminal_public_id
  146. ),
  147. "cash_sums" as (
  148. select
  149.         terminal_locations.terminal_public_id,
  150.         terminal_locations.location_id,
  151.         sales_exceeding_stake_limit.sales_count as deposit_limit_exceeded_count,
  152.         cash_withdrawals_exceeding_limit.withdraws_count as withdraw_limit_exceeded_count
  153.     from terminal_locations
  154.     full join (
  155.         select
  156.             terminal_locations.terminal_public_id,
  157.             terminal_locations.location_id,
  158.             count(1) as sales_count
  159.         from terminal_locations
  160.         right join "ActionContext" as ac on ac.location_id = terminal_locations.location_id
  161.         join "ActionContextPrincipalMapping" as acpm on acpm.context_id = ac.id and acpm.principal_id = terminal_locations.terminal_id
  162.  
  163.         join "BettingSale" as bs on bs.context_id = ac.id
  164.         where bs.amount > (2000 * 7.5)
  165.         group by
  166.             terminal_locations.terminal_public_id,
  167.             terminal_locations.location_id
  168.     ) as sales_exceeding_stake_limit on sales_exceeding_stake_limit.terminal_public_id = terminal_locations.terminal_public_id and sales_exceeding_stake_limit.location_id = terminal_locations.location_id
  169.     full join (
  170.         select
  171.             terminal_locations.terminal_public_id,
  172.             terminal_locations.location_id,
  173.             count(1) as withdraws_count
  174.         from terminal_locations
  175.         right join "WalletCashRegisterTransaction" as wcrt on wcrt.location_id = terminal_locations.location_id and wcrt.principal_machine_id = terminal_locations.terminal_id
  176.         where wcrt.amount < -(2000 * 7.5)
  177.         group by
  178.             terminal_locations.terminal_public_id,
  179.             terminal_locations.location_id
  180.     ) as cash_withdrawals_exceeding_limit on cash_withdrawals_exceeding_limit.terminal_public_id = terminal_locations.terminal_public_id and cash_withdrawals_exceeding_limit.location_id = terminal_locations.location_id
  181. )
  182. select
  183. terminal_locations.*,
  184. coalesce(betting_sums.total_sales, 0) as total_sales_betting,
  185. coalesce(betting_sums.total_bsi, 0) as total_bsi_betting,
  186. coalesce(virtual_sums.total_sales, 0) as total_sales_virtual,
  187. coalesce(virtual_sums.total_bsi, 0) as total_bsi_virtual,
  188. coalesce(cash_sums.deposit_limit_exceeded_count, 0) as total_num_of_exceeded_cash_deposits,
  189. coalesce(cash_sums.withdraw_limit_exceeded_count, 0) as total_num_of_exceeded_cash_withdrawals
  190. from terminal_locations
  191. join betting_sums on betting_sums.terminal_public_id = terminal_locations.terminal_public_id and betting_sums.location_id = terminal_locations.location_id
  192. join virtual_sums on virtual_sums.terminal_public_id = terminal_locations.terminal_public_id and virtual_sums.location_id = terminal_locations.location_id
  193. join cash_sums on cash_sums.terminal_public_id = terminal_locations.terminal_public_id and cash_sums.location_id = terminal_locations.location_id
  194. order by terminal_public_id, location_id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement