J'ai cette requête MySQL ici:
r.testingFinishedOn_timestamp >= '2019-05-02 00:00:00' AND r.testingFinishedOn_timestamp <= '2019-02-31 00:00:00'
3 Réponses :
Vous pouvez essayer la requête ci-dessous - en utilisant last_day () code>
@Akina, pouvez-vous vérifier ici - dbfiddle.uk/...
Désolé, ne faisait pas attention avec précision.
@Akina, pas de problèmes - :)
@FAHMI, je cherchais une requête qui produirait 12 tables différentes, 1 pour chaque mois avec les données identiques que celle renvoyée par ma requête ci-dessus.
@Johndoe, j'ai mis à jour la requête Ajout de groupe par année (R.Testingfineon_TimeStamp), mois (R.TestingFineinedon_TimeStamp) - Vous pouvez vérifier maintenant s'il répond à votre exigence ou non.
@Fahmi, je ne sais pas pourquoi cette requête ne génère pas de données exactes comme une requête ci-dessus. Ce groupe Données selon le devgroup_region Code> mais je voudrais que les données soient commandées par mois code> pour toutes les années / 2019.
Essayez ce qui suit:
SELECT
YEAR(r.testingFinishedOn_timestamp) year,
MONTH(r.testingFinishedOn_timestamp) month,
COUNT(*) ReleasePerMonth,
d.name as DevGroup_REGION
FROM
release_summary r
inner join
gti_server_info g
on r.gti_server_id = g.gti_server_id
inner join
dev_group d
on d.dev_group_id = g.dev_group_id
WHERE
r.test_type != 14
GROUP BY
YEAR(r.testingFinishedOn_timestamp),
MONTH(r.testingFinishedOn_timestamp),
d.name
ORDER BY year, month;
Pourquoi ne pas utiliser les alias dans votre groupe par code>?
Hé, cela semble fonctionner, mais cela ne renvoie que pour un seul mois. Je veux cette table produite pour chacun des 12 mois. Cela ne le retourne que pour un seul mois.
Vous ne pouvez pas. Cela lancerait une erreur. Mais vous pouvez mettre votre clause sélectionnée principale dans une sous-requête et définir une colonne nommée de cette façon.
J'ai simplement oublié de ranger votre où la clause CODE>. Je l'ai fait maintenant. S'il vous plaît vérifier à nouveau.
Une solution possible consiste à interroger des données pour l'ensemble d'une année et de groupe par J'ai ajouté la requête ci-dessous, mais elle n'est pas testée: p> SELECT
MONTH(r.testingFinishedOn_timestamp) ReleaseMonth,
COUNT(*) ReleasePerMonth,
d.name as DevGroup_REGION
FROM
release_summary r
inner join
gti_server_info g
on r.gti_server_id = g.gti_server_id
inner join
dev_group d
on d.dev_group_id = g.dev_group_id
WHERE
r.testingFinishedOn_timestamp >= '2020-01-01 00:00:00'
AND r.testingFinishedOn_timestamp < '2021-01-01 00:00:00'
AND r.test_type != 14
GROUP BY
d.name, MONTH(r.testingFinishedOn_timestamp);
ORDER BY
MONTH(r.testingFinishedOn_timestamp), d.name
Voulez-vous 1) Obtenez les données pendant 12 mois dans une requête? Exécuter 12 requêtes distinctes?
Il y a un bug dans votre requête: vous utilisez
<= code> avec un incorrect incluant inclus inclurant b> au lieu de<< / code> avec une limite supérieure exclusive (donc Vous manquez une journée entière de données!). Vous pouvez également omettre les composants de temps de la brièveté, alors changez votreoù code> à ceci:r.testingfineon_timetamp> = '2020-05-01' et r.testingfinishedon_timetamp <'2019-06-01 ' code>.@Akina, je voudrais 12 tables séparées pour chacun des 12 mois.
Vous pouvez exécuter 12 requêtes différentes itérant sur des mois au code de la clientèle et obtenez 12 lignes distinctes. Vous pouvez utiliser une procédure stockée ou multi-requêtes et obtenir un pack de rangement qui consiste à partir de 12 joints distincts, puis itérer sur eux.