Calculates the number of days a user has with questions that have upvotes and there are no downvoted questions and displays progress toward each of the badges
Q&A for professional and enthusiast programmers
select case when days >= 5 then 'Yes' else concat(days, '/', 5) end as Curious, case when days >= 30 then 'Yes' else concat(days, '/', 30) end as Inquisitive, case when days >= 100 then 'Yes' else concat(days, '/', 100) end as Socratic from (select count(*) as days from (select datediff(d, creationdate, getdate()) as creationDay, sum(case when score > 0 and closeddate is null then 1 else 0 end) as up, sum(case when score < 1 or closeddate is not null then 1 else 0 end) as down from Posts where OwnerUserId = ##UserId## and PostTypeId = 1 group by datediff(d, creationdate, getdate()) ) x where up > 0 and down = 0 ) y