Как я могу улучшить SQL-запрос ниже (SQL Server 2008)? Я хочу, чтобы попытаться избежать суб-выбирает, и я использую пару из них для получения результатов, как этотУлучшение запросов подзапроса
StateId TotalCount SFRCount OtherCount
---------------------------------------------------------
AZ 102 50 52
CA 2931 2750 181
etc...
SELECT
StateId,
COUNT(*) AS TotalCount,
(SELECT COUNT(*) AS Expr1 FROM Property AS P2
WHERE (PropertyTypeId = 1) AND (StateId = P.StateId)) AS SFRCount,
(SELECT COUNT(*) AS Expr1 FROM Property AS P3
WHERE (PropertyTypeId <> 1) AND (StateId = P.StateId)) AS OtherCount
FROM Property AS P
GROUP BY StateId
HAVING (COUNT(*) > 99)
ORDER BY StateId
Ваш ответ должен иметь правильный вывод, и по моему опыту 'SUM (CASE ...)' имеет тенденцию быть удивительно быстрым по сравнению с использованием внутренних выборок. – ean5533
Awesome, спасибо! Я отредактировал ваш ответ, чтобы удалить постороннюю запятую после «OtherCount». – Scott
+1, отличный ответ –