0
votes

Compter les enregistrements pour le premier jour de chaque mois de l'année

J'ai une table avec 4 colonnes énormes numéros d'enregistrements. Il a la structure suivante:

DATE_ENTERED    EMP_NAME     DATA       ORIGINATED
01-JAN-20        A          545454        APPLE


6 commentaires

Quelle est votre requête réelle? Vous pouvez choisir la date et le mois manuellement ou avez besoin de quelque chose pour tirer dynamiquement des enregistrements?


Quel produit DBMS utilisez-vous? "SQL" est juste une langue de requête, pas le nom d'un produit de base de données spécifique. Veuillez ajouter un tag pour le produit de base de données que vous utilisez. Pourquoi devrais-je marquer mon DBMS


Quelle est la sortie que vous voulez? Une ligne pour chaque mois?


J'utilise Oracle DB et j'ai besoin d'une ligne pour chaque premier jour du mois.


@HEMANTHTANNA Il a fallu du temps pour le savoir! Faites-moi savoir si cela fonctionne. J'ai mis à jour la réponse dans la section Mise à jour.


@HEMANTHTANNA J'ai mis à jour ma réponse sous Update-2, si c'est ce que vous attendez, faites-le-moi savoir.


4 Réponses :


0
votes
SELECT Year, Month, COUNT(*)
FROM
(
  SELECT 
  YEAR(DATE_ENTERED) Year
  MONTH(DATE_ENTERED) Month
  DAY(DATE_ENTERED) Day
  FROM your_table
  WHERE DAY(DATE_ENTERED) = 1
) A 
GROUP BY Year, Month
Generally WHERE DAY(DATE_ENTERED) = 1 will get you the records only for dates at the start of each month. Thus using Year and Month function you can group them by in order to get a count for each year and each month

0 commentaires

0
votes

Vous pouvez utiliser quelque chose comme ceci: xxx

pour le nombre de comptes utilisez ceci: xxx

update xxx

Voici comment les données ressemblent à:

 Entrez la description de l'image ici

Pour la liste des enregistrements xxx

Entrez la description de l'image ici

update-2 < / p> xxx

voici la sortie:

 Entrez la description de l'image ici


7 commentaires

Mais op ne semble pas avoir un champ day_of_month, seulement un champ DateTime régulier. Cela semble être le point de la question.


Correct je n'ai pas de jour de colonne_of_month


J'utilise Oracle DB Son jour de lancement est un identifiant invalide


@HEMANTHTANNA: C'est pourquoi vous devez toujours spécifier le produit DBMS que vous utilisez: Pour éviter les réponses qui ne fonctionnent pas pour vous


@HEMANTHTANNA Il a fallu du temps pour le savoir! Faites-moi savoir si cela fonctionne. J'ai mis à jour la réponse dans la section Mise à jour.


Bonjour Manju Vous êtes juste en train de donner au total tout le nombre de données pour tous les premiers mois combinés. Je vais essayer de compter pour le premier jour de la première journée de chaque mois pour le mois respectif.


@HEMANTHTANNA J'ai mis à jour le code maintenant (Update-2), laissez-moi savoir si c'est ce dont vous avez besoin.



0
votes

Vous voulez dire quelque chose comme xxx

Vous pouvez également utiliser datation_entred entre "yyyy0101" et "yyyy1231" (remplacez le yyyy avec l'année que vous souhaitez récupérer des données pour) au lieu de année (date_entred) = quelque_year , si la performance est un problème.


0 commentaires

1
votes

dans Oracle, vous pouvez utiliser la fonction trunc code> à la date de la date suivante:

SELECT TRUNC(DATE_ENTERED), COUNT(1) AS CNT
FROM YOUR_TABLE
WHERE TRUNC(DATE_ENTERED) = TRUNC(DATE_ENTERED, 'MON')
GROUP BY TRUNC(DATE_ENTERED, 'MON')


1 commentaires

Vous devez modifier le groupe SELECT QUERY Group par et SELECT sont différents et il lancera le groupe par erreur.