COUNT()
je agregační funkce, která se obvykle kombinuje s GROUP BY
doložka.
curdate()
je funkce data, která zobrazuje aktuální datum.
Pouze MySQL (pokud vím) umožňuje tuto syntaxi bez použití GROUP BY
doložka. Protože jste jej neposkytli, COUNT(*)
bude počítat celkový počet řádků v tabulce a owner
sloupec bude vybrán náhodně/výchozí nastavení optimalizátoru/podle indexů.
Toto by měl být váš dotaz:
select owner, count(*)
from pet
group by owner;
Což říká optimalizátoru, aby spočítal celkový počet řádků pro každý vlastník.
Pokud není zmíněna žádná skupina podle klauzule - agregační funkce se použijí na celá data tabulky.
UPRAVIT: Počet, který bude použit na každý řádek, nelze normálně provést pomocí COUNT()
a obvykle se používá s analytickou funkcí -> COUNT() OVER(PARTITION...)
který bohužel v MySQL neexistuje. Další možností je vytvořit JOIN/CORRELATED QUERY
pro tento další sloupec.
Další úprava: Pokud chcete celkový počet u každého vlastníka, můžete použít dílčí dotaz:
SELECT owner,
(SELECT COUNT(*) FROM pet) as cnt
FROM pet