Come contare i record univoci e ottenere il numero di questi unici nella tabella usando SQL?
Domanda
Immagina di avere una tabella come questa:
id: Prodotto: shop_id
1: Pallacanestro: 41
2: Calcio: 41
3: Rocket: 45
4: Auto: 86
5: Aereo: 86
Ora, questo è un esempio di grande centro commerciale Internet, dove ci sono negozi che vendono a un cliente, quindi i clienti possono scegliere più prodotti da ogni negozio e acquistarli in un paniere.
Tuttavia, non sono sicuro che esista una sintassi SQL che mi consenta di ottenere semplicemente shop_ids unici e il numero totale dei prodotti di tali negozi nel carrello clienti. Quindi otterrei qualcosa del tipo:
Shop 41 ha 2 prodotti
Acquista 45 un prodotto
Acquista 86 prodotti a due
Posso fare query SQL per scorrere tra le tabelle per creare una sorta di variabile di array ['shop_id'] ['number_of_products'] che memorizzerebbe tutti gli shop_ids di tutti i prodotti, quindi "li univoci" " - aumentare e contare quante volte ho dovuto ritagliare un altro shop_id per rimanere un po ', ma sembra solo un sacco di script inutili.
Se hai un'idea simpatica e chiara, per favore, fammelo sapere.
Soluzione
Questo è esattamente il genere di cose a cui servono le funzioni aggregate. Si crea una riga di output per ciascun gruppo di righe nella tabella. Raggruppali per shop_id e conta quante righe ci sono in ciascun gruppo.
select shop_id, count(1) from TABLE_NAME
group by shop_id