0
votes

Utilisation de Count Case à l'instruction Mois dans Mariadb 10.2.15

J'ai créé une requête pour calculer la quantité d'identité dans une table à l'aide de compteur , case , quand et mois ..

code: xxx

sortie: xxx

La sortie que je veux faire est de calculer l'ID dans chaque mois , nommément mois 1 et mois 2 xxx

Les données ci-dessus sont un fait

Utilisation de la requête ci-dessus ajoute à la place des résultats du mois de calcul 1 et du mois 2


4 commentaires

Utiliserait somme au lieu de compte aide?


@shahkalpeshin this cas je souhaite compter le nombre d'enregistrements dans la base de données avec un certain nombre de conditions


Je comprends. Avez-vous essayé d'utiliser somme ? Aide-t-il?


@shahkalpeh Oui, j'ai essayé d'utiliser la somme mais je ne peux pas compter le nombre d'enregistrements?


3 Réponses :


1
votes

Vous devriez compter null code> lorsque les critères de votre case code> ne correspondent pas. De plus, je préfère compter 1 code> sauf si vous voulez vraiment compter les identifiants eux-mêmes. Cette version devrait fonctionner:

1378 = 792 + 586


2 commentaires

Merci, c'est du travail et je comprends la compréhension des concepts décrits


Plus contrariété: somme (mois (de.Date in) = 1) comme '1'



1
votes

Supprimer l'autre partie du cas où l'expression - si vous utilisez autrement avec 0, le nombre prend également cela aussi en contrepartie qui vous donne une mauvaise volonté

SELECT
    COUNT(CASE WHEN MONTH(LogsFormatted.DateIn) = 1 THEN LogsFormatted.Id END ) AS '1',
    COUNT(CASE WHEN MONTH(LogsFormatted.DateIn) = 2 THEN LogsFormatted.Id  END ) AS '2'
FROM
    HrAttLogsFormatted AS LogsFormatted
WHERE
    LogsFormatted.DateIn BETWEEN '2019-01-01' AND '2019-02-31'
    AND LogsFormatted.Late != ''


1 commentaires

Oui, je ne considère pas 0 dans la fonction SQL ... merci de me rappeler



0
votes

Si vous utilisez mariadb, j'utiliserais simplement somme () avec un booléen: xxx

Ceci suppose que l'ID que vous comptez n'est jamais < Code> null (une hypothèse raisonnable pour un ID).

Note Autres modifications:

  • Les alias de colonne n'ont pas besoin d'être échappés. N'utilisez pas de noms non standard, sauf si vous en avez besoin - pour une raison quelconque - pour le traitement en aval.
  • Cela utilise un alias de table plus court, la requête est donc plus facile à écrire et à lire.
  • Les comparaisons de la date utilisent les inégalités, cela fonctionne donc à la fois pour date s et DateTime s.
  • <> est l'opérateur de comparaison SQL standard pour l'inégalité.

1 commentaires

C'est cool, je n'ai pas pensé à utiliser Sum ... merci pour l'expérience