SQL Usa CASE per COUNT il numero di righe in una colonna corrisponde a una condizione.


Esempio

Caso d'uso

CASE può essere usato insieme a SUM per restituire un conteggio di solo quegli articoli che corrispondono a una condizione predefinita. (È simile a COUNTIF in Excel.)

Il trucco consiste nel restituire risultati binari che indicano le corrispondenze, quindi gli "1" restituiti per le voci corrispondenti possono essere sommati per un conteggio del numero totale di corrispondenze.

Data questa tabella ItemSales , supponiamo che tu voglia conoscere il numero totale di articoli che sono stati classificati come "costosi":

Id Numero identificativo dell'oggetto Prezzo PriceRating
1 100 34.5 COSTOSO
2 145 2.3 A BUON MERCATO
3 100 34.5 COSTOSO
4 100 34.5 COSTOSO
5 145 10 CONVENIENTE

domanda

SELECT 
    COUNT(Id) AS ItemsCount,
    SUM ( CASE 
            WHEN PriceRating = 'Expensive' THEN 1
            ELSE 0
          END
        ) AS ExpensiveItemsCount
FROM ItemSales 

risultati:

ItemsCount ExpensiveItemsCount
5 3

Alternativa:

SELECT 
    COUNT(Id) as ItemsCount,
    SUM (
        CASE PriceRating 
            WHEN 'Expensive' THEN 1
            ELSE 0
        END
       ) AS ExpensiveItemsCount
FROM ItemSales