Czy ktoś może mi pomóc w zapytaniu SQL?

Mam podobne stoły

TABELA 1:

id_table1    ean    date_from      date_to     type     region      consumption 
  1          1234   2020-01-01    2021-01-01   blue      big          20000
  2          5678   2020-01-01    2021-01-01   blue      big2         80000
  2          6845   2020-01-01    2021-01-01   white    small         10000

TABELA 2:

id_table2        day      hour     type_blue_big_coefficient   type_blue_big2_coefficient  type_white_coefficient
  1          2020-01-01     1             0.011120                0.32652                     0.054165
  2          2020-01-01     2             0.023265                0.12543                     0.054165

I muszę pokazać produkcję taką jak:

EAN         Day           Hour     consumption  
1234     2020-01-01        1          222.4
5678     2020-01-01        1          26 121.6
6845     2020-01-01        1           541.65

Zużycie wyjściowe oblicza się przez mnożenie współczynnika z tabeli2 i zużycia z tabeli1. Istnieje wiele zmiennych obliczonych według typu i regionu z tabeli1. W wynikowym widoku muszę pokazać wszystkie EAN w tabeli 1 podzielonej na dzień i godzinę z zużyciem przez całą godzinę.

Czy ktoś wie, jak to zrobić?

/////// AKTUALIZACJA

Dzięki @gordon Linoff za pomoc. Teraz mam problem z szybkością zapytania. W Tabeli1 ma około 40 000 rekordów i w Tabeli2 około 8000 rekordów

Query Runing przez godzinę bez końca. Testowane na 2 serwerach. Oto jest link do pracy w DB

1
Milan Lidmila 28 lipiec 2020, 15:16

1 odpowiedź

Najlepsza odpowiedź

Myślę, że chcesz:

select t1.ean, t1.day, t2.hour,
       sum(case when t1.type = 'blue' and region = 'big' then t2.type_blue_big_coefficient * t1.consumption
                when t1.type = 'blue' and region = 'big2' then t2.type_blue_big2_coefficient * t1.consumption
                when t1.type = 'white' then t2.type_white_coefficient * t1.consumption
                else 0
           end) as consumption                
from table1 t1 join
     table2 t2
     on t1.ean = t2.ean and t1.day = t2.day
group by t1.ean, t1.day, t2.hour;

Powinieneś naprawdę naprawić model danych. Przechowywanie wartości współczynników w oddzielnych kolumnach w {x0}} jest antyzereamem. Te powinny być w oddzielnych wierszach, dzięki czemu można dołączyć do tabel razem na odpowiednich klawiszach.

Oto jest DB & LT; & GT;

2
Gordon Linoff 28 lipiec 2020, 14:06