2008-10-26 30 views
15

Imagínese que tengo tabla como la siguiente:¿Cómo contar registros únicos y obtener el número de estos únicos en la tabla mediante SQL?

Identificación: Producto: shop_id

1: Baloncesto: 41

2: Fútbol: 41

3: Rocket: 45

4: Coche: 86

5: Plano: 86

Ahora, este es un ejemplo de gran centro comercial de Internet, donde hay tiendas que venden a un cliente, por lo que los clientes pueden elegir más productos de cada tienda y comprarlo en una sola canasta.

Sin embargo, no estoy seguro de si hay alguna sintaxis SQL que me permita obtener simplemente shop_ids y el número total de productos de esas tiendas en la cesta del cliente. Así que me gustaría conseguir algo como:

Shop 41 tiene 2 productos

Shop 45 un producto

Shop 86 dos productos

Puedo hacer consultas SQL para recoger a través de la mesa para hacer alguna clase de la variable de matriz ['shop_id'] ['number_of_products'] que almacenaría todos los shop_ids de los productos, luego "unique them" - up y cuenta cuántas veces tuve que cortar un shop_id más para tener un poco de espacio restante pero eso parece una gran cantidad de secuencias de comandos inútiles.

Si tiene alguna idea buena y ordenada, por favor, hágamelo saber.

Respuesta

31

Este es exactamente el tipo de cosas para las que son funciones de agregado. Hace una fila de salida para cada grupo de filas en la tabla. Agrúpelos por shop_id y cuente cuántas filas hay en cada grupo.

select shop_id, count(1) from TABLE_NAME 
    group by shop_id 
+0

(1) after Count significa qué parámetro después de SELECT se contará? – Skuta

+2

No, el (1) no es una referencia a ninguna columna, solo es el valor entero 1. Es más típico usar COUNT (*) o COUNT (nombre de columna). Glomek está usando COUNT (1) como un valor entero constante, porque algunas personas creen que esto es más rápido que hacer referencia a una columna. –

+0

El optimizador * debe * ocuparse de que el conteo (*) tome el mismo tiempo que el recuento (1). Supongo que algunos optimizadores no lo hacen. – yfeldblum

Cuestiones relacionadas