select DisplayName from Users; select top 100 Title,Body,...

0

Please login or register to vote for this query.

(click on this box to dismiss)

Stack Overflow

Q&A for programmers

--1. Имена всех пользователей.
select DisplayName from Users;
--2. Заголовок, текст и имя создателя для 100 последних созданных вопросов.
select top 100 Title,Body, (select DisplayName from Users where Users.Id=Posts.OwnerUserId ) from Posts
where PostTypeId=1
order by Posts.CreationDate desc; 
--3. Количество зарегистрированных пользователей, вопросов, ответов и тэгов.
select count(Id) from Users; 
select count(Id) from Posts where PostTypeId = 1; 
select count(Id) from Posts where PostTypeId = 2; 
select count(Id) from Tags; 
--4. Имена и места проживания(Location) пользователей, зарегистрированных в 2015 году, старше 25 лет.
select DisplayName,Location from Users
where year(CreationDate)=2015 and Age>25;
--5. Количество пользователей, зарегистрированных в 2015 году, старше 25 лет.
select count(Id) from Users
where year(CreationDate)=2015 and Age>25;
--6. Количество пользователей, у которых в качестве места проживания указана Germany.
select count(Id) from Users 
where Location = 'Germany'; 
--7. Места проживания и количество пользователей, указавших соответствующее 
--   место проживания в своём профиле.
select  isNull(Location, 'Null'), count(Id) as CountOfLocation from Users 
group by Location 
order by CountOfLocation desc; -- Эта строка была добавлена ради интереса
--8. Первых 10 пользователей с максимальной репутацией, 
--   а также количество вопросов, созданных ими.
-- Если "с максимальной репутацией" означает действительно с максимальной репутацией, то так 
select top 10 Id, (select count(*) from Posts where PostTypeId=1 and OwnerUserId = Users.Id) as QuestionsCount from Users
where Reputation = (select top 1 Reputation from Users order by Reputation desc)
-- Если top10 пользователей по репутации, то
select top 10 Id, (select count(*) from Posts where PostTypeId=1 and OwnerUserId = Users.Id) as QuestionsCount from Users
order by Reputation desc;
--9. Всех пользователей, задавших не менее трёх вопросов с тэгом 'sql' 
--   и ответивших не менее чем на 10 вопросов с тэгом 'java'.
(select OwnerUserId from Posts 
 where PostTypeId=1 and 
       Posts.Id in (select PostId from PostTags 
                    where TagId =(select Id from Tags 
                                  where TagName = 'sql'
                                 )
                   )
 group by OwnerUserId
 having count(Posts.Id) >= 3)
intersect
(select OwnerUserId from Posts
 where PostTypeId=2 and 
       Posts.ParentId in (select PostId from PostTags
                          where TagId =(select Id from Tags 
                                        where TagName = 'java'
                                       )
                         )
 group by OwnerUserId
 having count(Posts.Id) >= 10); 

--10. Все пары пользователей, таких что каждый из двух оставил хотя бы один 
--    комментарий под некоторым ответом другого пользователя.
-- Все Пользователи чьи ответы были прокомментированы пользователем U1.Id 
--(select Answers.OwnerUserId from (select Id, OwnerUserId from Posts 
--                                  where Posts.PostTypeId = 2) as Answers,
--                                 (select PostId from Comments 
--                                 where Comments.UserId = U1.Id ) as C
-- where Answers.Id = C.PostId)
-- Нужный запрос:
select U1.Id, U2.Id from Users as U1, Users as U2
where U1.Id in (select Answers.OwnerUserId 
                       from (select Id, OwnerUserId 
                                    from Posts 
                             where Posts.PostTypeId = 2) as Answers,
                            (select PostId from Comments 
                             where Comments.UserId = U2.Id) as C
                where Answers.Id = C.PostId) and
      U2.Id in (select Answers.OwnerUserId 
                       from (select Id, OwnerUserId 
                                    from Posts 
                             where Posts.PostTypeId = 2) as Answers,
                            (select PostId from Comments 
                             where Comments.UserId = U1.Id) as C
                where Answers.Id = C.PostId);

--11. Количество вопросов, в которых выбранный ответ содержит в два или
--    более раза меньше комментариев, чем некоторый другой ответ на этот
--    же вопрос.
-- Вопросы у которых есть выбранный ответ и ещё какие-то ответы 
select count(*) from (select P1.Id, 
       (select CommentCount 
         from Posts 
        where Id = P1.AcceptedAnswerId
       ) as AACC, 
       (select  top 1 CommentCount
         from Posts 
        where PostTypeId = 2 and
              Id !=  P1.AcceptedAnswerId and -- Это условие, конечно излишне, но так понятен физический смысл всего этого
              ParentId = P1.Id
        order by CommentCount desc
       ) as MAXCC  
 from Posts as P1 
 where PostTypeId = 1 and AcceptedAnswerId is not null and AnswerCount>=2) as YOLO
 where 2*AACC <= MAXCC;
--12. Список всех вопросов с самым комментируемым ответом на данный вопрос.
select Questions.Id as QuestionId,
       (select top 1 Id  from (select Id,Body,ParentId,CommentCount from Posts 
                               where PostTypeId=2) as Answers
        where ParentId = Questions.Id
        order by CommentCount desc
       ) as MostCommentedAnswer
       from (select Id,Title,Body 
                    from Posts 
             where PostTypeId=1  ) as Questions ;
--13. Найдите всех пользователей, которые либо непосредственно отвечали 
--    на вопросы либо оставляли комментарии(как комментарии к самому вопросу,
--    так и комментарии к некоторому из ответов на вопрос) к вопросам,
--    помеченных хотя бы 2 из 10 самых часто используемых в вопросах тэгов.

-- Интересующие нас вопросы
-- Id 10ти Самых популярных Тегов  
--select top 10 Id from Tags 
-- order by Tags.Count desc; 
-- Все вопросы, содержащие хотя бы два из десяти самых популярных тегов
--((select Id 
--   from (select Id 
--          from Posts 
--         where PostTypeId=1) as Questions
--  where (select  count(*) 
--          from ((select TagId 
--                  from PostTags 
--                 where PostId=Questions.Id
--                ) 
--                intersect 
--                (select top 10 Tags.Id 
--                  from Tags 
--                 order by Tags.Count desc
--                )
--               ) as SWAG
--        )>=2
-- ) as PopTagsQuestions
--)

-- Все ответы и коментарии непосредственно к интересующим нас вопросам
-- (select Id 
--   from Posts  
--  where ParentId in ((select Id 
--                       from (select Id 
--                              from Posts 
--                             where PostTypeId=1) as Questions
--                      where (select  count(*) 
--                              from ((select TagId 
--                                      from PostTags 
--                                     where PostId=Questions.Id
--                                    ) 
--                                    intersect 
--                                    (select top 10 Tags.Id 
--                                      from Tags 
--                                     order by Tags.Count desc
--                                    )
--                                   ) as SWAG
--                            )>=2
--                     ) as PopTagsQuestions
--                    )
-- )
select distinct OwnerUserId from Posts where
Id in ((select Id 
  from Posts  
 where ParentId in ((select Id 
                      from (select Id 
                             from Posts 
                            where PostTypeId=1) as Questions
                     where (select  count(*) 
                             from ((select TagId 
                                     from PostTags 
                                    where PostId=Questions.Id
                                   ) 
                                   intersect 
                                   (select top 10 Tags.Id 
                                     from Tags 
                                    order by Tags.Count desc
                                   )
                                  ) as SWAG
                           )>=2
                    ) 
                   )
)
union
(select Id
  from Posts
 where ParentId in (select Id 
                     from Posts  
                    where ParentId in ((select Id 
                                         from (select Id 
                                                from Posts 
                                               where PostTypeId=1) as Questions
                                        where (select  count(*) 
                                                from ((select TagId 
                                                        from PostTags 
                                                       where PostId=Questions.Id
                                                      ) 
                                                      intersect 
                                                      (select top 10 Tags.Id 
                                                        from Tags 
                                                       order by Tags.Count desc
                                                      )
                                                     ) as SWAG
                                              )>=2
                                       ) 
                                      )
                   )
                   ));

Enter Parameters

Options:
Switch sites:
loading Hold tight while we fetch your results