Q&A for professional and enthusiast programmers
WITH sq1 AS ( SELECT a.Id , CASE WHEN q.AcceptedAnswerId IS NULL THEN 0 ELSE 1 END accepted , CASE WHEN q.AcceptedAnswerId = a.Id THEN 1 ELSE 0 END mine FROM Posts a INNER JOIN Posts q ON a.ParentId = q.Id WHERE a.OwnerUserId = ##UserId## ) SELECT COUNT(1) AS answers , SUM(sq1.accepted) AS accepted , SUM(sq1.mine) AS mine , CONVERT(decimal(5,2) ,( CONVERT(decimal(10),SUM(sq1.accepted)) / CONVERT(decimal(10),COUNT(1)) ) * 100 ) AS pct_accepted , CONVERT(decimal(5,2) ,( CONVERT(decimal(10),SUM(sq1.mine)) / CONVERT(decimal(10),COUNT(1)) ) * 100 ) AS pct_mine , CONVERT(decimal(5,2) ,( CONVERT(decimal(10),SUM(sq1.mine)) / CONVERT(decimal(10),SUM(sq1.accepted)) ) * 100 ) AS pct_mine_on_accept FROM sq1