Ich habe eine SQL-Abfrage geschrieben, das für jedes Jahr-Week-Minen Produkt einen Bericht von einigen Statistiken erzeugt.SQL-Abfrage hängt an beitreten
Es funktioniert genau wie gewünscht mit Ausnahme einer Sache - trn.wid-date ist nicht das richtige Datum zu verwenden.
Ich sollte td.datetime-act-comp-dump verwenden. Als ich trn.wid-date mit td.datetime-act-comp-dump ersetzen, es gibt mir keine Fehler scheint aber nur auf unbestimmte Zeit zu hängen. Ich ließ es gestern für eine Weile gehen, und es kam mit ORA-01652 nicht mehr temporärem Segment von 128 in Tabellen TEMP zu verlängern, obwohl ich nicht, dass Fehler da gesehen habe.
Ich verstehe nicht, was verursachen könnte, dass man bedenkt, dass ich in der Lage bin erfolgreich MAX (td.datetime-act-comp-Dump) in der Abfrage unter
select to_char(trn.wid_date, 'IYYY') as dump_year,
to_char(trn.wid_date-7/24, 'IW') as dump_week,
SUBSTR(trn.train_control_id,1,2) as Mine,
vcon.product_type_code as Product,
COUNT(DISTINCT trn.train_control_id) as Trains,
COUNT(1) as Wagons,
MIN(trn.wid_date) as Min_WID_Hrs,
MAX(trn.wid_date) as Max_WID_Hrs,
MIN(td.datetime_act_comp_dump) as Min_Fin_Dump,
MAX(td.datetime_act_comp_dump) as Max_Fin_Dump,
ROUND(SUM(con.weight_total-con.empty_weight_total),0) as Tot_Tonnes,
ROUND(AVG(con.weight_total-con.empty_weight_total),2) as Avg_Tonnes,
ROUND(MIN(con.weight_total-con.empty_weight_total),2) as Minimum,
ROUND(PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY (con.weight_total-con.empty_weight_total) DESC),2) as "1st",
from widsys.consist con
INNER JOIN widsys.train trn
USING (train_record_id)
INNER JOIN tpps.train_details td
ON trn.train_tpps_id||trn.mine_code = td.train_id||td.mine_code
INNER JOIN widsys.v_consist_ore_detail vcon
USING (consist_id)
where trn.direction = 'N'
and to_char(trn.wid_date, 'IYYY') = 2009
and to_char(trn.wid_date-7/24, 'IW') = 25
group by to_char(trn.wid_date, 'IYYY'),
to_char(trn.wid_date-7/24, 'IW'),
SUBSTR(trn.train_control_id,1,2),
vcon.product_type_code
order by to_char(trn.wid_date-7/24, 'IW') DESC
Gerade zurück in Um Fehler zu beheben, habe ich aus der obigen Abfrage versucht, alles zu entfernen mit vcon und ersetzen trn.wid_datum mit td.datetime-act-comp-dump. Der Effekt ist, dass es Berichte über nur Jahr-Week-Minen statt Jahr-Week-Minen Produkt. (Siehe Abfrage unten)
Diese neue Abfrage tatsächlich ausführt und nicht nur hängen, gibt aber ein paar ungeradeen Ergebnisse und tut, ist nicht nicht ausreichend, da es Dinge bricht nicht auf Produkt.
select to_char(td.datetime_act_comp_dump, 'IYYY') as dump_year,
to_char(td.datetime_act_comp_dump-7/24, 'IW') as dump_week,
SUBSTR(trn.train_control_id,1,2) as Mine,
--vcon.product_type_code as Product,
COUNT(DISTINCT trn.train_control_id) as Trains,
COUNT(1) as Wagons,
MIN(trn.wid_date) as Min_WID_Hrs,
MAX(trn.wid_date) as Max_WID_Hrs,
MIN(td.datetime_act_comp_dump) as Min_Fin_Dump,
MAX(td.datetime_act_comp_dump) as Max_Fin_Dump,
ROUND(SUM(con.weight_total-con.empty_weight_total),0) as Tot_Tonnes,
ROUND(AVG(con.weight_total-con.empty_weight_total),2) as Avg_Tonnes,
ROUND(MIN(con.weight_total-con.empty_weight_total),2) as Minimum,
ROUND(PERCENTILE_DISC(0.99) WITHIN GROUP (ORDER BY (con.weight_total-con.empty_weight_total) DESC),2) as "1st"
from widsys.consist con
INNER JOIN widsys.train trn
USING (train_record_id)
INNER JOIN tpps.train_details td
ON trn.train_tpps_id||trn.mine_code = td.train_id||td.mine_code
--INNER JOIN widsys.v_consist_ore_detail vcon
--USING (consist_id)
where trn.direction = 'N'
and to_char(td.datetime_act_comp_dump, 'IYYY') = 2009
and to_char(td.datetime_act_comp_dump-7/24, 'IW') = 25
group by to_char(td.datetime_act_comp_dump, 'IYYY'),
to_char(td.datetime_act_comp_dump-7/24, 'IW'),
SUBSTR(trn.train_control_id,1,2)
--vcon.product_type_code
order by to_char(td.datetime_act_comp_dump-7/24, 'IW') DESC
Irgendwelche Ratschläge, was schief gehen könnte?
Cheers,
Tommy