2010-11-23 3 views
1
SELECT SearchTerm, CustomerID, CreatedOn 
FROM   SearchLog 
WHERE  CreatedOn >= DATEADD(DAY, DATEDIFF(Day, 0, GETDATE()), -5) 
GROUP BY SearchTerm, CustomerID, CreatedOn 

Je veux ajouter une colonne, qui sera COUNT (searchTerm) et je veux commander la requête par le searchterm qui est principalement recherché. et la colonne devrait indiquer combien de fois le searchterm est recherché. Merci pour votre aiderequête SQL qui compte les termes de recherche et les commandes de ce

Répondre

0

Essayez ce votre groupe en est erroné si je comprends correctement-

SELECT d1.CustomerId,SearchTerm,CreatedOn,d1.TimesSearched 
FROM 
(
    SELECT CustomerID, COUNT(SearchTerm) as TimesSearched 
     FROM SearchLog 
     WHERE CreatedOn >= DATEADD(DAY, DATEDIFF(Day, 0, GETDATE()), -5) 
     GROUP BY CustomerID 
     ORDER BY COUNT(SearchTerm) desc 
) as d1 inner join SearchLog on 
    d1.CustomerID=SearchLog .CustomerId 

+0

Je reçois 1 pour chaque colonne, bien que celui ci-dessous ont le même searchterm – Laziale

+0

mise à jour réponse ... c'est un problème avec votre groupe par .. – Vishal

+0

toujours même, juste le terme recherché est ordonné DESC, le nombre est toujours par 1 dans chaque colonne – Laziale

0

est-CreatedOn avec ou sans horodatage? Si c'est seulement la partie de la date que vous pourriez faire:

SELECT s.SearchTerm, s.CustomerID, s.CreatedOn, COUNT(1) AS search_count 
FROM  SearchLog s 
WHERE CreatedOn >= DATEADD(DAY, DATEDIFF(Day, 0, GETDATE()), -5) 
GROUP BY s.SearchTerm, s.CustomerID, s.CreatedOn 
ORDER BY COUNT(1) 

sinon vous devez enlever l'horodatage en quelque sorte (je ne connais pas votre dialecte SQL)

Questions connexes