-- 5.2.1 Betriebe und ihre Haupttätigkeit für das Berichtsjahr 2010 
SELECT 
    b.administrative_number as "administrative number", 
    b.year as year, 
    b.name as "facility name", 
    b.mailing_address as "mailing address", 
    t.prtr_key as t_nr, 
    t.prtr_description as activity, 
    t.business_sector as business, 
    case when t.main_activity then 'Yes' else 'No' end as "main activity", 
    b.federal_state as "federal state" 
FROM 
    facilities b, 
    activities t 
WHERE 
    b.id = t.facility_id 
    AND t.main_activity = 1 
    AND b.year = '2010' 
GROUP BY t.business_sector, b.year, b.administrative_number;


-- 5.2.2 Betriebe mit Freisetzung Dioxin, medienbezogen, nach Branchen (der Haupttätigkeit), für alle Berichtsjahre 
SELECT 
    b.administrative_number, 
    b.name, 
    b.mailing_address, 
    b.wgs84_x, 
    b.wgs84_y, 
    t.business_sector, 
    t.prtr_key as t_nr, 
    t.prtr_description as activity, 
    t.main_activity as "main activity", 
    f.annual_load, 
    f.annual_load_accident, 
    f.determination_method, 
    f.compartment as "environmental compartment", 
    f.substance_name, 
    f.year 
FROM facilities b 
JOIN releases f ON 
b.id = f.facility_id 
JOIN activities t ON b.id = t.facility_id AND t.main_activity = 1 
WHERE f.substance_name = 'PCDD + PCDF (dioxins + furans) (as Teq)' 
ORDER BY f.annual_load DESC; 


-- 5.2.3 Betriebe der Chemiebranche mit Schadstofffrachten, medienbezogen, für alle Berichtsjahre (nur Haupttätigkeiten) 
SELECT 
    b.administrative_number as "administrative number", 
    b.name as "facility name", 
    b.mailing_address as "mailing address", 
    t.business_sector as business, 
    t.prtr_key as t_nr, 
    t.prtr_description as activity, 
    t.main_activity as "main activity", 
    f.annual_load, 
    f.annual_load_accident, 
    f.determination_method, 
    f.compartment as "environmental compartment", 
    f.substance_name AS substance, 
    b.year AS year 
FROM facilities b 
    JOIN releases f ON   b.id = f.facility_id 
    JOIN activities t ON b.id = t.facility_id 
WHERE 
    t.main_activity = 1 AND t.business_sector = 'Chemical industry'; 


-- 5.2.4 Aggregation der Schadstofffrachten aus Freisetzungen, medienbezogen, für alle Berichtsjahre 
SELECT 
    f.substance_name AS substance, 
    f.year as year, 
    sum(f.annual_load) as "annual load", 
    f.compartment as compartment 
FROM 
    releases f 
WHERE f.substance_name is not null 
GROUP BY f.substance_name, f.year, f.compartment 
ORDER BY "annual load" DESC; 


-- 5.2.5 Aggregation der Schadstofffrachten für Verbringung von Abwasser nach Branchengruppe (der Haupttätigkeit) für das Berichtsjahr 2009 
SELECT 
    v.substance_name as substance, 
    v.year as year, 
    sum(v.annual_load) as "annual load", 
    t.business_sector as business 
FROM 
    facilities b, 
    activities t, 
    wastewater_transfers v 
WHERE 
    b.id = v.facility_id 
    AND b.id = t.facility_id 
    AND t.main_activity = 1 
    AND v.substance_name is not null 
    AND b.year = 2009 
GROUP BY v.substance_name, v.year, t.business_sector 
ORDER BY "annual load" DESC;


-- 5.2.6 Betriebe mit Entsorgung von gefährlichem Abfall, je Branche der Haupttätigkeit, In-/Ausland und Abfalldisposition3 
SELECT 
    b.administrative_number as "administrative number", 
    b.name as name, 
    b.mailing_address as "mailing address", 
    t.business_sector as business, 
    t.prtr_key as t_nr, 
    t.prtr_description as description, 
    t.main_activity as "main activity", 
    va.quantity as quantity, 
    case when va.hazardous then 'hazardous' else 'nonhazardous' end AS "waste type", 
    case when va.foreign_country then 'outland' else 'inland' end AS "inland/outland", 
    va.disposition as disposition, 
    va.year AS year 
FROM 
facilities b 
JOIN waste_transfers va ON b.id = va.facility_id 
    AND va.hazardous 
JOIN activities t ON b.id = t.facility_id AND t.main_activity 
    AND va.year = '2010' 
ORDER BY quantity DESC; 


-- 5.2.7 Aggregation der Abfallmengen für gefährlichen Abfall, nach Branchengruppen für alle Berichtsjahre (nur Haupttätigkeiten) 
SELECT 
    av.year as year, 
    t.business_sector as business, 
    sum(av.quantity) as "amount of waste" 
FROM 
    facilities b, 
    activities t, 
    waste_transfers av 
WHERE 
    b.id = av.facility_id 
    AND b.id = t.facility_id 
    AND t.main_activity = 1 
    AND av.hazardous = 1 
GROUP BY av.year, t.business_sector 
ORDER BY year DESC, "amount of waste" DESC; 


-- 5.2.8 Betriebe mit geheimgehaltenen Tätigkeiten und den entsprechenden Geheimhaltungsgründen im Jahr 2010 
SELECT b.federal_state, b.administrative_number, b.name, b.nace_text, pdcc.reason as "proprietary data, company confidential" 
FROM facilities b 
    JOIN activities t 
        ON b.id = t.facility_id 
    JOIN activities_pdcc pdcc 
        ON t.id = pdcc.activity_id 
WHERE b.year = 2010; 


-- 5.2.9 Freigesetzte Menge von CO2 in die Luft je Betrieb über die Jahre 2007-2010
SELECT b2007.administrative_number "administrative number", b2007.name "name (refers to 2007)", b2010.name "name (refers to 2010)", b2007.mailing_address "mailing address",
    f2007.annual_load || ' kg/a' "annual load 2007",
    f2008.annual_load || ' kg/a' "annual load 2008",
    f2009.annual_load || ' kg/a' "annual load 2009",
    f2010.annual_load || ' kg/a' "annual load 2010"
FROM facilities b2007, facilities b2008, facilities b2009, facilities b2010
    LEFT JOIN releases f2007
        ON f2007.facility_id = b2007.id
            AND f2007.substance_name = 'Carbon dioxide (CO2)' AND f2007.compartment = 'Air'
    LEFT JOIN releases f2008
        ON f2008.facility_id = b2008.id
            AND f2008.substance_name = 'Carbon dioxide (CO2)' AND f2008.compartment = 'Air'
    LEFT JOIN releases f2009
        ON f2009.facility_id = b2009.id
            AND f2009.substance_name = 'Carbon dioxide (CO2)' AND f2009.compartment = 'Air'
    LEFT JOIN releases f2010 ON f2010.facility_id = b2010.id
        AND f2010.substance_name = 'Carbon dioxide (CO2)' AND f2010.compartment = 'Air'
WHERE b2007.year = 2007 AND b2008.year = 2008 AND b2009.year = 2009 AND b2010.year = 2010
    AND (b2007.administrative_number = b2008.administrative_number OR b2008.predecessor_id = b2007.id)
    AND (b2008.administrative_number = b2009.administrative_number OR b2009.predecessor_id = b2008.id)
    AND (b2009.administrative_number = b2010.administrative_number OR b2010.predecessor_id = b2009.id)
    AND (f2007.id IS NOT NULL
      OR f2008.id IS NOT NULL
      OR f2009.id IS NOT NULL
      OR f2010.id IS NOT NULL)
ORDER BY b2007.name, b2007.administrative_number;