Guest User

Untitled

a guest
May 29th, 2023
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.45 KB | None | 0 0
  1. http://sqlfiddle.com/#!9/8c7fc59/11
  2.  
  3.  
  4. SELECT SUM(amounts_left*price)/SUM(amounts_left) as eBuyIN, SUM(amounts_left), instrument_id FROM transactions as t WHERE 1 GROUP BY currency_id,broker_id,portfolio_id,instrument_id;
  5.  
  6. eBuyIN  SUM(amounts_left)   instrument_id  
  7. 89.600000000000000000000000 6.0000000000    42765  
  8. 1.325909604519774011299435  2655.0000000000 42807  
  9. 1.090000000000000000000000  480.0000000000  42811  
  10. 8.930000000000000000000000  57.0000000000   42812  
  11. 0.980000000000000000000000  501.0000000000  42813  
  12. 150.000000000000000000000000    12.0000000000   71523  
  13. 89.600000000000000000000000 6.0000000000    71552  
  14.  
  15.  
  16. SELECT
  17.     SUM(price)/SUM(mleft), SUM(mleft), `instrument_id`
  18. FROM(
  19.     SELECT
  20.         `instrument_id`, currency_id, broker_id, portfolio_id,
  21.         amounts_left AS mleft,
  22.         amounts_left * price * (
  23.              SELECT `rate`
  24.              FROM `currency_exchanges`
  25.              WHERE `from_currency_id` = t.currency_id
  26.                AND `to_currency_id` = 2
  27.                AND `date` <= t.created
  28.              ORDER BY `date` DESC LIMIT 1
  29.         ) AS price
  30.     FROM `transactions` AS `t`
  31.     WHERE `action` = 1 AND amounts_left > 0
  32.       AND `portfolio_id` = 128
  33. ) a group by instrument_id, currency_id, broker_id, portfolio_id
  34.  
  35.  
  36.  
  37.  SUM(price)/SUM(mleft)  SUM(mleft)  instrument_id  
  38. 89.60000000000000000000000000000    6.0000000000    42765
  39. 1.32590960451977401129943502825     2655.0000000000     42807
  40. 1.09000000000000000000000000000     480.0000000000  42811
  41. 8.93000000000000000000000000000     57.0000000000   42812
  42. 0.98000000000000000000000000000     501.0000000000  42813
  43. 150.00000000000000000000000000000   12.0000000000   71523
  44. 89.60000000000000000000000000000    6.0000000000    71552
  45.  
  46.  
  47.  WITH cte AS
  48. (
  49.          SELECT   `instrument_id` ,
  50.                   row_number() OVER(partition BY t.currency_id,t.broker_id,t.portfolio_id,t.instrument_id ORDER BY amounts_left DESC )                                                         AS rownumber,
  51.                   sum(amounts_left) OVER(partition BY t.currency_id,t.broker_id,t.portfolio_id,t.instrument_id ORDER BY amounts_left DESC rows BETWEEN CURRENT row AND      1 following)       AS amountsleftt,
  52.                   sum(amounts_left*price) OVER(partition BY t.currency_id,t.broker_id,t.portfolio_id,t.instrument_id ORDER BY amounts_left DESC rows BETWEEN CURRENT row AND      1 following) AS pricet
  53.          FROM     currency_exchanges                                                                                                                                                           AS ce
  54.          JOIN     transactions                                                                                                                                                                 AS t
  55.          ON       from_currency_id = t.currency_id
  56.          AND      to_currency_id = 2
  57.          AND      ce.date <= t.created
  58.          AND      action = 1
  59.          AND      portfolio_id = 128 )
  60. SELECT pricet/         amountsleftt,
  61.        amountsleftt AS total,
  62.        `instrument_id`
  63. FROM   cte
  64. WHERE  rownumber = 1;
  65.  
  66.  
  67. priceT/amountsleftT Total   instrument_id  
  68. 89.600000000000000000000000 12.0000000000   42765  
  69. 1.230000000000000000000000  1000.0000000000 42807  
  70. 1.090000000000000000000000  960.0000000000  42811  
  71. 8.930000000000000000000000  114.0000000000  42812  
  72. 0.980000000000000000000000  1002.0000000000 42813  
  73. 200.000000000000000000000000    12.0000000000   71523  
  74. 89.600000000000000000000000 12.0000000000   71552  
  75.  
  76.  
Advertisement
Add Comment
Please, Sign In to add comment