Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.25 KB | None | 0 0
  1. SELECT dt.opmIdentifierId, dt.meterId, d.dateTimeFrom, d.dateTimeTo, d.qty * dt.ratio, @now := NOW(), @now
  2. FROM
  3. (
  4.   SELECT mt.opmIdentifierId, mt.meterId, mt.dateTimeFrom, mt.dateTimeTo, di.locationId, mt.qty / SUM(di.qty) AS ratio
  5.   FROM
  6.   (
  7.     SELECT o.opmIdentifierId, m.id AS meterId,
  8.       -- cast to have better decimal percision
  9.       CAST((m.qtyVt + m.qtyNT) AS DECIMAL(22, 8)) AS qty,
  10.       -- local to utc time conversion
  11.       CONVERT_TZ(m.invPerFrom, 'Europe/Bratislava', 'GMT') AS dateTimeFrom,
  12.       -- dateTimeTo in tdd data is midnight date of next day so we need to add a day
  13.       CONVERT_TZ(DATE_ADD(m.invPerTo, INTERVAL 1 DAY), 'Europe/Bratislava', 'GMT') AS dateTimeTo
  14.     FROM ote_ee_duf_meter AS m
  15.     JOIN ote_ee_duf_mo_opm AS o ON o.id = m.moOpmId  
  16.     WHERE o.opmIdentifierId = 3511 AND m.invPerFrom >= '2017-02-10' AND m.invPerTo <= '2019-12-31' AND o.invId IS NOT NULL            
  17.   ) AS mt
  18.   JOIN ote_ee_tdd_data AS di USE INDEX (locationId_dateTimeFrom_dateTimeTo) ON di.locationId = 134
  19.     AND di.dateTimeFrom >= mt.dateTimeFrom AND di.dateTimeTo <= mt.dateTimeTo
  20.   GROUP BY mt.meterId
  21. ) AS dt
  22. JOIN ote_ee_tdd_data AS d ON d.locationId = dt.locationId AND d.dateTimeFrom >= dt.dateTimeFrom
  23.   AND d.dateTimeTo <= dt.dateTimeTo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement