MYSQL COUNT pro Land

Counten? Mit COUNT(). Wie sonst.
Du hast keine Ahnung was die SQLs da machen - stimmts? Wenn ja, dann versuch es zu verstehen. Und dann verstehst du was ich in deiner Anforderung ev. falsch verstanden habe.

Also, was meinst du mit Counten? Willst du die Anzahl Einträge pro postal_code oder die Anzahl Postal-Codes. Ein einziges Wort und doch so verschieden die Anforderung. Mein SQL deckt den ersten Fall ab.
 
ja ich bin leier nicht so erfahren darin.. versteh aber schon bischen was.. erst müsste ich aber die query optimieren, da sie extrem langsam ist!
Anzahl Postal-Codes ist wichtig fuer mich.. fuer jedes land via ISO_COUNTRY_CODE
 
Ah, also die Anzhal Postal-Codes und nciht die ANzhal pro postal-code.
Dann mach ein COUNT darum und schmeisse ihn aus dem GROUP BY

SQL:
SELECT 
    ahr.iso_country_code,
    COUNT(DISTINCT pa.postal_code) AS cnt_postal_code,
    COUNT(DISTINCT ahr.order1_id) AS order1_state, 
    COUNT(DISTINCT ahr.order2_id) AS order2_country, 
    COUNT(DISTINCT ahr.order8_id) AS order8_city 
FROM 
    rdf_admin_hierarchy         ahr
    inner JOIN rdf_postal_area   pa
        ON ahr.country_id = pa.country_id
GROUP BY 
    ahr.iso_country_code

ggf. wirds schneller wenndu die postal-codes pro Land zählst bevor du das ganze verknüpfst
SQL:
SELECT 
    ahr.iso_country_code,
    SUM(pa.cnt_postal_code) AS cnt_postal_code,
    COUNT(DISTINCT ahr.order1_id) AS order1_state, 
    COUNT(DISTINCT ahr.order2_id) AS order2_country, 
    COUNT(DISTINCT ahr.order8_id) AS order8_city 
FROM 
    rdf_admin_hierarchy         ahr
    (SELECT   	country_id,
    			COUNT(DISTINCT pa.postal_code)  AS cnt_postal_code
    FROM		rdf_postal_area   pa
    GROUP BY 	country_id) 		pa
WHERE
    ahr.country_id = pa.country_id
GROUP BY 
    ahr.iso_country_cod
 
Zuletzt bearbeitet von einem Moderator:
vielen DANK!!

ich verstehe den code leider nicht ganz..
(SELECT country_id,
COUNT(DISTINCT pa.postal_code) AS cnt_postal_code
FROM rdf_postal_area pa
GROUP BY country_id) pa

ich bekomme bei DEU = 684866847 postelcodes..was nicht sein kann..

Ich wollte wissen, wie viele Postalcodes es fuer jedes Lang gibt..

Code:
SELECT 
    ahr.iso_country_code,
    COUNT( pa.cnt_postal_code) AS cnt_postal_code,
--  SUM(pa.cnt_postal_code) AS cnt_postal_code,
    COUNT(DISTINCT ahr.order1_id) AS order1_state, 
    COUNT(DISTINCT ahr.order2_id) AS order2_country, 
    COUNT(DISTINCT ahr.order8_id) AS order8_city 
FROM 
    rdf_admin_hierarchy ahr,
    (SELECT     country_id,
                COUNT(DISTINCT pa.postal_code)  AS cnt_postal_code
    FROM        rdf_postal_area pa
    GROUP BY    country_id) pa
WHERE
    ahr.country_id = pa.country_id
GROUP BY 
    ahr.iso_country_code

Mit COUNT( pa.cnt_postal_code) AS cnt_postal_code,
bekomm ich 83307 Postalcodes fuer DEU..was aber irgend wie nichtr sein kann..
 
Zuletzt bearbeitet:
Ich hatte da SUM drin und nicht count. Ist ein grosser unterschied. Eigentlich kannst du cnt_postal_code in den GROUP BY setzen und das SUM und COUNT wegnehmen.

Der eigentliche Count kannst du einfach testen. Das folgende Query gibt dir das aus
SQL:
SELECT country_id,
COUNT(DISTINCT pa.postal_code) AS cnt_postal_code
FROM rdf_postal_area pa
GROUP BY country_id

Da du ja pro country bereits gezählt hast, kannst du das auch so setzen (angenommen jeder iso_country_code hat nur eine country_id)
SQL:
SELECT 
    ahr.iso_country_code,
    pa.cnt_postal_code,
    COUNT(DISTINCT ahr.order1_id) AS order1_state, 
    COUNT(DISTINCT ahr.order2_id) AS order2_country, 
    COUNT(DISTINCT ahr.order8_id) AS order8_city 
FROM 
    rdf_admin_hierarchy         ahr
    (SELECT     country_id,
                COUNT(DISTINCT pa.postal_code)  AS cnt_postal_code
    FROM        rdf_postal_area   pa
    GROUP BY    country_id)         pa
WHERE
    ahr.country_id = pa.country_id
GROUP BY 
    ahr.iso_country_code,
    pa.cnt_postal_code
 
Zuletzt bearbeitet von einem Moderator:
Zurück