2012-02-17 2 views
1

J'essaie de compter le nombre de nouveaux enregistrements pour une date donnée uniquement si la date de l'enregistrement est la min (date) pour le propriétaire de l'enregistrement. Voici la requête que je suis en train de courir:Compter le nombre de nouveaux enregistrements pour une date donnée uniquement s'ils sont nouveaux

SELECT COUNT(*) 
    FROM user_total_spends 
WHERE user_id IN (SELECT user_id 
        FROM user_total_spends 
        WHERE MIN(DATE(date_posted)) = '2012-02-07') 
    AND merchant_location_id = '4f39b201-4a50-40ff-9cdf-cec51506eaf2' 
    AND date_posted = '2012-02-07'; 

En fait, je suis en train de dire, si c'est la première date cet utilisateur/marchand est rencontré, compter comme un nouvel utilisateur pour ce marchand.

Lorsque j'exécute ceci, j'obtiens une erreur Invalid use of group function. Qu'est-ce que je rate?

+1

Au lieu de 'WHERE min (date (date_posted)) = '2012-02-07'' try 'HAVING min (date (date_posted)) =' 2012-02-07'' – RRUZ

+0

Affichez la solution pour que je puisse la marquer comme réponse. Cela a fonctionné parfaitement! –

Répondre

2

vous devez utiliser HAVING pour filtrer une condition pour un groupe d'enregistrement ou d'une fonction d'agrégation, donc au lieu de WHERE min(date(date_posted)) = '2012-02-07' essayer HAVING min(date(date_posted)) = '2012-02-07'

0

Essayez ci-dessous:

SELECT count(*) FROM user_total_spends 
    WHERE user_id IN (SELECT user_id FROM user_total_spends GROUP BY user_id HAVING min(date(date_posted)) = '2012-02-07') 
    AND merchant_location_id = '4f39b201-4a50-40ff-9cdf-cec51506eaf2' AND 
    date_posted = '2012-02-07'; 
+0

Manquant 'GROUP BY user_id' –

+0

@J Cooper: Noté. Merci ... Corrigé maintenant –

Questions connexes