Question

Je voudrais comparer la popularité des balises entre les deux mois, commandé par le plus grand changement.

J'ai travaillé sur la façon de compter le nombre de balises dans un mois, mais pas comment les comparer.Voici ce que j'ai à ce jour:

select TOP 10
    tags.tagname, count(*) AS tagcount
from Posts
    INNER JOIN PostTags ON PostTags.PostId = Posts.id
    INNER JOIN Tags     ON Tags.id         = PostTags.TagId
where
    datepart(year,  Posts.CreationDate) = 2011 and
    datepart(month, Posts.CreationDate) = 1
Group by tags.tagname
Order by tagcount DESC

http://data.stackexchange.com/stackoverflow/qe/924/query-count-tags-from-daterange
(remarque: vous pouvez le copier, modifier, et de l'exécuter)

Je suis nouveau sur SQL.Il semble que j'ai juste besoin de créer une deuxième requête pour le mois précédent (décembre 2010), et puis de combiner ces deux requêtes, avec une colonne qui est prevMonth.count - nextMonth.count, et commande par colonne (obtenir juste le top X, afin de ne pas prendre une éternité).

Mais je ne peux pas travailler sur la façon de combiner les deux requêtes de cette façon - je pense que vous devriez être en mesure de les imbriquer, mais je ne peux pas le faire fonctionner.Une autre façon est de créer une table temporaire -, il semble inefficace pour moi, mais peut-être que c'est la bonne voie?

Merci beaucoup pour toute aide!


BTW:ce que j'aimerais faire:

  1. Après cela, j'aimerais trouver le taux de croissance (et pas seulement de la variation absolue des nombres).C'est juste (new-old)/old.Comme la vitesse, mais normalisé.

  2. Ensuite, les balises, dont le taux de croissance est l'augmentation de la plus - c'est à direqui ont une croissance exponentielle.C'est nécessiterait 3 mois:calculer le taux de variation entre les mois 1 et 2, et entre les mois 2 et 3.La différence entre elles est le taux de variation du taux de variation.C'est comme l'accélération.

[ C'est comme un signal pour les nouvelles technologies en croissance, ce qui commence souvent de petite dans un très spécifique d'utilisation.Les personnes dans cette petite zone de parler les uns aux autres, et les bonnes idées sont transmises, dans une réaction en chaîne:une personne raconte deux, chacune d'elles a dire deux de plus et ainsi de suite.La cette niche est converti après un certain temps, et peut-être qu'il se propage à l'autre, la même niche.Voir "Voir Ce qui est à Côté", par la Dilemme de l'innovateur guy.]


Voici une version ultérieure, à l'aide de JNK de réponse:http://data.stackexchange.com/stackoverflow/q/92869/query-tags-with-highest-increase-in-growth-over-3-months

Et...la croissance la plus rapide de la balise est... facebook-c#-sdk.Je ne sais pas combien c'est utile, mais c'est une façon intéressante de naviguer de la SORTE.

Était-ce utile?

La solution

Utilisation #De Tables Temporaires:

-- QUERY: count tags from daterange
-- TODO: compare from two different dateranges...

select TOP 10
    tags.tagname, count(*) AS tagcount
INTO #TagCountTemp1
from Posts
    INNER JOIN PostTags ON PostTags.PostId = Posts.id
    INNER JOIN Tags     ON Tags.id         = PostTags.TagId 
where
    datepart(year,  Posts.CreationDate) = 2011 and
    datepart(month, Posts.CreationDate) = 1
Group by tags.tagname
Order by tagcount DESC

select TOP 10
    tags.tagname, count(*) AS tagcount
INTO #TagCountTemp2
from Posts
    INNER JOIN PostTags ON PostTags.PostId = Posts.id
    INNER JOIN Tags     ON Tags.id         = PostTags.TagId 
where
    datepart(year,  Posts.CreationDate) = 2010 and
    datepart(month, Posts.CreationDate) = 12
Group by tags.tagname
Order by tagcount DESC

SELECT TOP 10
t2.tagname, t2.tagcount as 'Month 1', t1.tagcount as 'Month 2', (t1.tagcount-t2.tagcount) as 'Increase'
FROM #TagCountTemp1 as t1
LEFT JOIN #TagCountTemp2 as t2
  ON T1.tagname = t2.tagname
ORDER BY (t1.tagcount-t2.tagcount) desc​​​​​​​​​​​​​​​

Cela a bien fonctionné pour moi!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top