sql >> Databáze >  >> RDS >> Mysql

Vnořené dotazy k získání počítat se dvěma podmínkami

Musíte seskupit sloupec infection a (ip &ipc ) jinak je připojte pomocí dílčího dotazu, jako je tento:

SELECT t1.ip, t1.isp, t2.infection, t1.ipc, t1. ispc, t2.incount
FROM
    (SELECT ip, isp, infection, COUNT(ip) as ipc, COUNT(isp) as ispc
    FROM (
       SELECT ip, isp, infection
       FROM tbl1
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl2
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl3
       )x
     GROUP BY ip, isp) t1
JOIN
    (SELECT ip, isp, infection, COUNT(infection) as incount
     FROM (
       SELECT ip, isp, infection
       FROM tbl1
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl2
       UNION ALL
       SELECT ip, isp, infection
       FROM tbl3
       )x
    GROUP BY ip, isp,  infection)t2
ON t1.ip = t2.ip
ORDER BY ip, isp, infection Desc

Zobrazit tento SQLFiddle

Poznámka: Myslím, že váš požadovaný výstup je nesprávný, protože:

  1. V Table3 neexistuje žádná infection pro ip=6 ale je to ve vašem výstupu
  2. infection other ve vašem výstupu chybí (místo toho je zde malware )


  1. ORA-01537. Chci hledat, kde je soubor zahrnut

  2. SQL Chybějící pravá závorka v pořadí po příkazu

  3. mysql union s chybou fulltextového vyhledávání

  4. SUM(poddotaz) v MYSQL