BlogProgramming

MySQL: How to ‘SUM IF’ or ‘COUNT IF’

MySQL doesn’t have those direct functions available, but it is possible to do that using CASE as in the following example:

SELECT 
	SUM(CASE WHEN EI.activo = 'S' THEN 1 ELSE 0 END) AS total_activos,
	SUM(CASE WHEN EI.activo != 'S' THEN 1 ELSE 0 END) AS total_removidos
FROM
	core_items AS EI
WHERE
	EI.id_ficha = 190;

Result in this example will be similar to this:

Explanation: As the query iterates the SUM increments the value by 1 when the condition is met, otherwise it does not.

Here it is a Laravel ORM example:

$sqlString = [
	DB::Raw("SUM(CASE WHEN activo = 'S' THEN 1 ELSE 0 END) AS total_activos"),
	DB::Raw("SUM(CASE WHEN activo != 'S' THEN 1 ELSE 0 END) AS total_removidos")
];

$result = Model::select($sqlString)
                 ->where("id_ficha", $idFicha)
                 ->first();

0%

User Rating: Be the first one !

Artigos Relacionados

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

Botão Voltar ao Topo
João Clérigo - Photography
Fechar

AdBlocker Detetado
AdBlocker Detected

Por favor ajude este website permitindo a visualização de alguns anúncios. Obrigado. Please help this website allowing the view of some advertising. Thank you!