Reputation: 272
The Stack Exchange Data Explorer allows SQL queries against a Stack Exchange database. I tried this one —
select
month(CreationDate) month,
year(CreationDate) year,
sum(lower(left(Title,2))='wh')/count(*) wh,
(select sum(Score)/count(*)
from Posts u
where month(CreationDate)=month(t.CreationDate)
and year(CreationDate)=year(t.CreationDate)
and lower(left(Title,2))='wh'
and PostTypeId=1 -- question
) wh_score,
sum(Score)/count(*) score,
(select sum(AnswerCount)/count(*)
from Posts u
where month(CreationDate)=month(t.CreationDate)
and year(CreationDate)=year(t.CreationDate)
and lower(left(Title,2))='wh'
and PostTypeId=1 -- question
) wh_answers,
sum(AnswerCount)/count(*) answers
from Posts t
where PostTypeId=1 -- question
group by month,year;
— but the site told me
Incorrect syntax near ')'. Incorrect syntax near 'wh_score'. Incorrect syntax near 'wh_answers'.
and I cannot figure out why. Can anyone help, please?
Things I've tried, to no avail:
datepart(month,CreationDate)
instead of month(CreationDate)
(and likewise for year
)as
for aliases (then the latter two of the three errors complained about 'at' rather than about the aliases)left(Title,2)
instead of lower(left(Title,2))
and
su.
for column names in the subqueriesUpvotes: 0
Views: 107
Reputation: 17058
sum(lower(left(Title,2))='wh')
. You have to convert it into a CASE WHEN
operator.Here a corrected query (that gives a timeout):
select
month(CreationDate) month
, year(CreationDate) year
, sum(case when lower(left(Title,2))='wh' then 1 else 0 end)/count(*) wh
, (select sum(Score)/count(*)
from Posts u
where month(CreationDate)=month(t.CreationDate)
and year(CreationDate)=year(t.CreationDate)
and lower(left(Title,2))='wh'
and PostTypeId=1 -- question
) wh_score,
sum(Score)/count(*) score,
(select sum(AnswerCount)/count(*)
from Posts u
where month(CreationDate)=month(t.CreationDate)
and year(CreationDate)=year(t.CreationDate)
and lower(left(Title,2))='wh'
and PostTypeId=1 -- question
) wh_answers,
sum(AnswerCount)/count(*) answers
from Posts t
where PostTypeId=1 -- question
group by month(CreationDate), year(CreationDate);
What are you trying to do with this query?
Upvotes: 1