2010-07-20 7 views
3

Inspiré par this question on Meta, j'ai écrit deux requêtes sur le Stack Exchange Data Explorer, un qui compte le nombre total de Questions Asked by Month sur SO et un autre qui compte le Bounties Awarded by Month. Comment puis-je les combiner pour avoir la sortie dans une requête? J'aimerais voir année, mois, questions, primes et montant dans un rapport.combiner deux requêtes qui comptent par mois

Les questions sont enregistrées dans le tableau où les messages PostTypeId = 1, mais les primes sont enregistrées dans le tableau de vote où VoteTypeId = 9.

+0

Je ne peux jamais trouver la manière générale de le faire; Je finis par créer une table temporaire et la modifier –

Répondre

4

J'ai écrit ceci dans le bloc-notes & n'ont pas travaillé avec l'explorateur de données sur le SO.

select Isnull(V.Year, P.Year) As Year, 
Isnull(V.Month, P.Month) As Month, 
Isnull(V.Bounties, 0) As Bounties, 
Isnull(V.Amount,0) As Amount , 
P.Questions 
FROM 
(
select 
datepart(year, Posts.CreationDate) Year, 
datepart(month, Posts.CreationDate) Month, 
count(Posts.Id) Questions 
from Posts 
where PostTypeid = 1 -- 1 = Question 
group by datepart(year, Posts.CreationDate), datepart(month, Posts.CreationDate) 
) AS P 
left JOIN 
(
select 
datepart(year, Votes.CreationDate) Year, 
datepart(month, Votes.CreationDate) Month, 
count(Votes.Id) Bounties, 
sum(Votes.BountyAmount) Amount 
from Votes 
where VoteTypeId = 9 -- 9 = BountyAwarded 
group by datepart(year, Votes.CreationDate), datepart(month, Votes.CreationDate) 
) AS V 
ON P.Year = V.Year AND P.Month = V.Month 
order by P.Year, P.Month 
+0

Cela expire lorsque j'essaie de l'exécuter dans SEDE. J'ai essayé presque * exactement * la même chose avant de poster cette question. La seule différence était que j'ai regroupé et commandé par Votes.CreationDate. Au moins, je sais que ma première tentative n'était pas complètement stupide si quelqu'un d'autre avait eu la même chose. :) –

+0

Mis à jour. Vérifiez s'il vous plaît. – shahkalpesh

+0

On dirait que vous l'avez cloué à la deuxième tentative cependant. Je vous remercie! Voulez-vous enregistrer ceci sur SEDE sous votre nom, ou puis-je simplement modifier l'original? –

Questions connexes