2010-01-28 2 views
3

Je ne suis pas sûr que ce soit dans le cadre de MySQL pour être honnête ou si un peu de php est nécessaire ici pour analyser les données. Mais si c'est le cas ... une sorte de procédure stockée est probablement nécessaire.Est-il possible de grouper les lignes d'une journée dans un horodatage?

J'ai une table qui stocke les lignes avec un horodatage et un montant.

Ma requête est dynamique et sera basée sur une plage de dates fournie par l'utilisateur. Je voudrais récupérer le SUM() des montants pour chaque jour dans une table qui sont entre la plage de dates. y compris un 0 s'il n'y a pas d'entrées pour un jour donné

Quelque chose à l'effet de ...

SELECT 
    CASE 
    WHEN //there are entries present at a given date 
     THEN SUM(amount) 
    ELSE 0 
    END AS amountTotal, 
    //somehow select the day 
    FROM thisTableName T 
    WHERE T.timeStamp BETWEEN '$start' AND '$end' 
    GROUP BY //however I select the day 

Voici deux parter ...
est-il un moyen sélectionner une section d'une colonne renvoyée? Comme une sorte de regex dans mysql?
Existe-t-il un moyen de renvoyer les 0 pour les dates sans lignes?

+0

* pour le retour 0 * - peut-être une sorte de logique pour voir si la rangée précédente retournée était plus de 1 jour d'intervalle? ... je ne suis pas sûr. Cela pourrait ne pas être possible. –

+0

C'est possible avec une jointure à gauche, un lien vers un exemple est dans la réponse ci-dessous. –

Répondre

2
select * from thisTableName group by date(created_at); 

Dans votre cas, il serait plus comme

SELECT id, count(id) as amountTotal 
FROM thisTableName 
WHERE timeStamp BETWEEN '$start' AND '$end' 
GROUP BY DATE(timeStamp); 

Votre question est un double jusqu'à présent: link.

+0

très agréable. Comment pourrais-je retourner zéro pour les dates sans données? –

+1

Je l'ai corrigé à 'date', car vous aurez probablement une requête 'plusieurs mois'. Comme pour les dates sans données, cette question a déjà reçu une réponse: http://stackoverflow.com/questions/75752/what-is-the-most-straightforward-way-to-pad-empty-dates-in-sql- résultats-sur-soit/75928 # 75928 –

+0

solution très intelligente! Savez-vous quoi - 'déclarer d datetime' faire? –

Questions connexes