MySQL - Comment puis-je obtenir la SOMME d'un nombre d'un champ?
Je suis à l'aide de l'instruction suivante et obtenir presque tout ce dont j'ai besoin. En outre, je voudrais faire la SOMME de tous les row_total résultats.
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
Et voici un exemple du résultat, avec la dernière colonne est la colonne je veux ajouter de l'ensemble:
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
Vous voulez à la fois les données actuellement affichées dans vous exemple et la somme de la dernière colonne de valeurs? Si oui: pouvez-vous pas simplement la somme des valeurs dans la couche d'application?
Oui, je veux bien les données que j'ai affiché ET la somme de la dernière col de valeurs. Je pourrais ajouter des éléments dans le contrôleur ou de la couche de la vue, mais pensé qu'il valait mieux adapté au Modèle.
Oui, je veux bien les données que j'ai affiché ET la somme de la dernière col de valeurs. Je pourrais ajouter des éléments dans le contrôleur ou de la couche de la vue, mais pensé qu'il valait mieux adapté au Modèle.
OriginalL'auteur k00k | 2010-01-29
Vous devez vous connecter pour publier un commentaire.
Pour obtenir la somme:
Pour obtenir le total général (et tous les autres agrégats) comme un enregistrement supplémentaire:
Pour obtenir le total de la somme dans un champ supplémentaire:
Quassnoi: c'est assez lisse. Et cela fonctionne bien si je quitte l'ORDRE, sinon la COMMANDE PAR déclenche une erreur d': utilisation Incorrecte de CUBE/CUMULATIF et à l'ORDRE PAR
bien sûr, tout oublié. Juste envelopper dans une requête imbriquée. Je vais mettre à jour le post.
merci, fonctionne bien. Même si maintenant je pense que ce serait mieux si le correctif n'est pas un enregistrement supplémentaire, mais plutôt si c'était un champ supplémentaire. Cela permettra à mon avis de la couche, donc je ne pas afficher les valeurs dans un foreach() en boucle. Possible?
Après avoir lu un peu plus sur le correctif CUMULATIF, je ne pense pas qu'il est possible de mettre les valeurs de cumul dans un nouveau domaine. Pour l'instant je vais utiliser cette solution, bien que l'ORDRE EN est gênant car il est difficile de vraiment le massage de la façon que je veux. Pour l'instant, je suis à la recherche d'une valeur NULL sur la couche vue.
OriginalL'auteur Quassnoi
Encapsuler votre requête comme:
Les commentaires ci-dessous, vous pouvez essayer...
L'union de tous vous permettra d'ajouter une ligne supplémentaire à l'ensemble de résultats qui vous donnera une 'ligne'. Vous pouvez modifier les champs vides (les guillemets simples) pour correspondre à vos types de données ou de leur attribuer des valeurs qui représentent le total de votre ligne.
Vous voulez pas garder les autres informations, vous voulez le total de toutes les informations, il n'existe aucun moyen de combiner le reste des lignes. Si vous souhaitez obtenir la somme de chaque ligne, il suffit d'ajouter la SOMME(ligne). Attendez, vous voulez une ligne séparée pour le total?
Oui, je veux garder l'autre d'infos dans la suite de trop. Je voudrais avoir un distinct/champ supplémentaire pour le total.
OriginalL'auteur C Bauer
compris, tu vas faire un certain pourcentage à la fois, hun? j'ai édité le code, essayez-le maintenant
Qui renvoie une erreur: le Mélange des colonnes de GROUPE (MIN(),MAX(),COUNT(),...) avec aucun GROUPE de colonnes est illégal s'il n'y a pas de clause GROUP BY
merde.... vous avez raison, j'ai oublié de placer la clause group by, vérifier maintenant
L'erreur a disparu, mais la valeur de la GlobalTotal est la même que la valeur de la row_total. pastie.org/800579
OriginalL'auteur Tufo