sql >> Database >  >> RDS >> Mysql

Tellen van tafel 2 en groeperen per maand

Voeg beide tabellen samen met maand:

SELECT MONTH(I.date) AS `month`
     , COUNT(I.ID) AS `countin`
     , COUNT(O.ID) AS `countOUT`
  FROM TableIN I
 LEFT JOIN TableOUT O
    ON MONTH(I.Date) = MONTH(O.Date)
 GROUP BY MONTH(I.date)
UNION
SELECT MONTH(O.date) AS `month`
     , COUNT(I.ID) AS `countin`
     , COUNT(O.ID) AS `countOUT`
  FROM TableIN I
 RIGHT JOIN TableOUT O
    ON MONTH(I.Date) = MONTH(O.Date)
 GROUP BY MONTH(I.date);

Resultaat:

| MONTH | COUNTIN | COUNTOUT |
------------------------------
|     5 |       1 |        1 |
|     7 |       1 |        1 |
|     6 |       0 |        1 |

Bekijk deze SQLFiddle

Om uw resultaat per maand te ordenen, moet u een subquery als deze gebruiken:

SELECT * FROM
(
    SELECT MONTH(I.date) AS `month`
         , COUNT(I.ID) AS `countin`
         , COUNT(O.ID) AS `countOUT`
      FROM TableIN I
     LEFT JOIN TableOUT O
        ON MONTH(I.Date) = MONTH(O.Date)
     GROUP BY MONTH(I.date)
    UNION
    SELECT MONTH(O.date) AS `month`
         , COUNT(I.ID) AS `countin`
         , COUNT(O.ID) AS `countOUT`
      FROM TableIN I
     RIGHT JOIN TableOUT O
        ON MONTH(I.Date) = MONTH(O.Date)
     GROUP BY MONTH(I.date)
    ) tbl
ORDER BY Month;

Bekijk deze SQLFiddle



  1. Jooq LocalDateTime-velden gebruiken systeemtijdzone in plaats van sessietijdzone

  2. MySQL:alternatieven voor ORDER BY RAND()

  3. Wordt LIMIT 1 aanbevolen voor zoekopdrachten waarbij de WHERE-voorwaarde is gebaseerd op PK?

  4. Django-DB-Migrations:kan TABLE niet WIJZIGEN omdat er triggergebeurtenissen in behandeling zijn