Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT dt.opmIdentifierId, dt.meterId, d.dateTimeFrom, d.dateTimeTo, d.qty * dt.ratio, @now := NOW(), @now
- FROM
- (
- SELECT mt.opmIdentifierId, mt.meterId, mt.dateTimeFrom, mt.dateTimeTo, di.locationId, mt.qty / SUM(di.qty) AS ratio
- FROM
- (
- SELECT o.opmIdentifierId, m.id AS meterId,
- -- cast to have better decimal percision
- CAST((m.qtyVt + m.qtyNT) AS DECIMAL(22, 8)) AS qty,
- -- local to utc time conversion
- CONVERT_TZ(m.invPerFrom, 'Europe/Bratislava', 'GMT') AS dateTimeFrom,
- -- dateTimeTo in tdd data is midnight date of next day so we need to add a day
- CONVERT_TZ(DATE_ADD(m.invPerTo, INTERVAL 1 DAY), 'Europe/Bratislava', 'GMT') AS dateTimeTo
- FROM ote_ee_duf_meter AS m
- JOIN ote_ee_duf_mo_opm AS o ON o.id = m.moOpmId
- WHERE o.opmIdentifierId = 3511 AND m.invPerFrom >= '2017-02-10' AND m.invPerTo <= '2019-12-31' AND o.invId IS NOT NULL
- ) AS mt
- JOIN ote_ee_tdd_data AS di USE INDEX (locationId_dateTimeFrom_dateTimeTo) ON di.locationId = 134
- AND di.dateTimeFrom >= mt.dateTimeFrom AND di.dateTimeTo <= mt.dateTimeTo
- GROUP BY mt.meterId
- ) AS dt
- JOIN ote_ee_tdd_data AS d ON d.locationId = dt.locationId AND d.dateTimeFrom >= dt.dateTimeFrom
- AND d.dateTimeTo <= dt.dateTimeTo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement