Estoy creando una consulta con una cláusula GROUP BY
que necesita la capacidad de contar registros basados solo en una determinada condición (por ejemplo, contar solo registros donde un cierto valor de columna es igual a 1).Servidor sql equivalente de una función de agregado COUNTIF
SELECT UID,
COUNT(UID) AS TotalRecords,
SUM(ContractDollars) AS ContractDollars,
(COUNTIF(MyColumn, 1)/COUNT(UID) * 100) -- Get the average of all records that are 1
FROM dbo.AD_CurrentView
GROUP BY UID
HAVING SUM(ContractDollars) >= 500000
La línea de COUNTIF()
obviamente falla ya que no hay función SQL nativo llamado COUNTIF
, pero la idea aquí es determinar el porcentaje de todas las filas que tienen el valor '1' para MiColumna.
¿Alguna idea sobre cómo implementar esto correctamente en un entorno MS SQL 2005?
(Sé que OP preguntó acerca de MS SQL, pero solo un pequeño comentario para usuarios de SQLite que hacen lo mismo) SQLite no tiene 'ISNULL', en su lugar puedes hacer' CASE WHEN myColumn IS NULL', o usar 'ifnull' (https://stackoverflow.com/a/799406/1861346) – Matt