COUNT() è una funzione di aggregazione che di solito è combinata con un GROUP BY clausola.
curdate() è una funzione di data che restituisce la data corrente.
Solo MySQL (per quanto ne so) consente questa sintassi senza utilizzare GROUP BY clausola. Poiché non l'hai fornito, COUNT(*) conterà la quantità totale di righe nella tabella e il owner la colonna verrà selezionata in modo casuale/impostazione predefinita dell'ottimizzatore/in base agli indici.
Questa dovrebbe essere la tua domanda :
select owner, count(*)
from pet
group by owner;
Ciò indica all'ottimizzatore di contare le righe totali, per ciascuna proprietario.
Quando nessuna clausola group by menzionata, le funzioni di aggregazione vengono applicate a tutti i dati della tabella.
MODIFICA: Normalmente non è possibile eseguire un conteggio che verrà applicato a ciascuna riga con COUNT() e di solito usato con una funzione analitica -> COUNT() OVER(PARTITION...) che purtroppo non esiste in MySQL. L'altra opzione è quella di creare una JOIN/CORRELATED QUERY per questa colonna aggiuntiva.
Un'altra modifica: Se vuoi totalizzare il conteggio accanto a ciascun proprietario, puoi utilizzare una query secondaria:
SELECT owner,
(SELECT COUNT(*) FROM pet) as cnt
FROM pet