J'utilise la déclaration suivante et j'aurai presque tout ce dont j'ai besoin. De plus, j'aimerais avoir la somme de tous les résultats de la ligne_totale.
1 10.00 30 992 24 9920.00 3 25.00 30 995 290 24875.00 16 50.00 30 988 335 49400.00 17 100.00 30 1000 335 100000.00
3 Réponses :
encapsuler votre requête comme: à partir des commentaires ci-dessous, vous pouvez essayer ... p> Le syndicat tout permettra de Vous devez ajouter une ligne supplémentaire à la série de résultats qui vous donnera une «rangée totale». Vous pouvez modifier les champs vides (les citations simples) pour correspondre à vos types de données ou les affecter des valeurs spéciales qui représenteront votre rangée totale. P> P>
D'accord, mais cela ne me donnera que le total et non les autres informations, correct?
Vous ne conservez pas les autres informations, vous souhaitez que le total de toutes les informations, il n'ya aucun moyen de combiner le reste des lignes. Si vous voulez obtenir la somme de chaque ligne, ajoutez simplement la somme (rangée) sur et sur. Attendez, voulez-vous une rangée distincte pour le total?
Oui, je veux aussi garder les autres informations dans le résultat. Je voudrais avoir un champ séparé / supplémentaire pour le total.
SELECT TB.campaign_id, TB.campaign_amount, TB.warning_trigger, TB.code_count, TB.days_remain, TB.row_total, SUM(TB.row_total) GlobalTotal FROM (SELECT c.id AS campaign_id, c.amount AS campaign_amount, c.warning_trigger, COUNT(cc.id) as code_count, DATEDIFF(c.end_date, CURDATE()) as days_remain, SUM(c.amount) as row_total FROM campaigns c JOIN campaign_codes cc LEFT JOIN partners p on p.id = 4 WHERE c.partner_id = 4 AND cc.status = 0 AND c.id = cc.campaign_id GROUP BY c.id ORDER BY campaign_amount ASC) TB GROUP BY TB.campaign_id, TB.campaign_amount, TB.warning_trigger, TB.code_count, TB.days_remain, TB.row_total
@TUFO: Cela ne me donnera que le total et non tous mes exemples d'autres résultats (dont j'ai besoin).
compris, vous allez faire un pourcentage avec les deux, Hun? J'ai édité le code, essayez-le maintenant
Qui jette une erreur de: mélange de colonnes de groupe (min (), max (), comptage (), ...) sans colonnes de groupe n'est illégale s'il n'y a pas de groupe par clause
Une erreur est partie, mais la valeur du global global est identique à la valeur de la ligne_totale. Pastie.org/800579
Pour obtenir la somme en cours:
SELECT c.id AS campaign_id, c.amount AS campaign_amount, c.warning_trigger, COUNT(cc.id) as code_count, DATEDIFF(c.end_date, CURDATE()) as days_remain, SUM(c.amount) as row_total, ( SELECT SUM(c.amount) FROM campaign c, ⦠-- the same but without the GROUP BY and ORDER BY clauses. ) FROM campaign c, ⦠GROUP BY c.id ORDER BY campaign_amount ASC
Quassnoi: C'est assez slick. Et cela fonctionne bien si je laisse la commande par, sinon la commande en jette une erreur de: utilisation incorrecte de cube / rouleau et commander par
@ K00K: Bien sûr, oublié à ce sujet. Juste envelopper dans une requête imbriquée. Je vais mettre à jour le post.
@Quassnoi: merci, travaille bien. Bien que maintenant, je pense que ce serait mieux si le Rollup n'était pas un enregistrement supplémentaire, mais si c'était un champ supplémentaire. Cela aidera sur ma couche de vue pour que je n'imprime pas les valeurs dans une boucle de Foreach (). Possible?
Après avoir lu un peu plus sur Rollup, je ne pense pas qu'il soit possible de mettre les valeurs de rouler dans un nouveau champ. Pour l'instant, je vais utiliser cette solution, bien que la commande par est gênante car il est difficile de vraiment masser la façon dont je veux. Pour l'instant, je vérifie une valeur null sur la couche de vue.
@Quassnoi: Votre dernier exemple fonctionne parfaitement, merci! Choisi!
Voulez-vous que les deux données sont actuellement affichées dans votre exemple et i> la somme des valeurs de la dernière colonne? Si oui: ne pouvez-vous pas simplement résumer les valeurs dans la couche d'application?
Oui, je veux que les données que j'ai affichées et la somme des dernières valeurs du Col. Je pourrais l'ajouter ensemble dans le contrôleur ou la couche de vue, mais je pensais qu'il est mieux adapté au modèle.