2012-03-03 9 views
39

Si tengo una tabla y los datos de la siguiente manera:SQL Orden por el conde

ID | Name | Group 

1 Apple  A  

2 Boy  A 

3 Cat  B 

4 Dog  C 

5 Elep  C 

6 Fish  C 

y deseo pedir que de acuerdo con el total de grupo de menor a mayor valor, tales como: A - 2 registros , B - 1 registro, C - 3 registros, por lo que se convertirá en:

3 Cat  B 

1 Apple  A  

2 Boy  A 

4 Dog  C 

5 Elep  C 

6 Fish  C 

probé

$sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)"; 

bu Solo devuelve un resultado para mí.

¿Hay alguna sugerencia? Gracias.

+0

comprobar mi respuesta y quiero saber si eso es bien con usted ... También he columna GROUP_VALUE ... –

Respuesta

83

Primero debe agregar los datos, esto se puede hacer utilizando la cláusula GROUP BY:

SELECT Group, COUNT(*) 
FROM table 
GROUP BY Group 
ORDER BY COUNT(*) DESC 

La palabra clave DESC le permite mostrar los más altos niveles primero, ORDER BY por órdenes predeterminadas en orden ascendente que mostraría el recuento más bajo primero.

+0

Muchas gracias por su respuesta, pero ¿me devuelve un resultado por grupo solamente? tales como: Cat, B | Apple, A | Perro, C –

+1

¿Está ejecutando este código u otro código? Sobre la base de la primera tabla que nos ha facilitado la salida de esta consulta sería: C3 A 2 B 1 –

+0

veo, lo entiendo ahora. Muchas gracias por su respuesta y respuesta. –

3

Probar:

SELECT count(*),group FROM table GROUP BY group ORDER BY group 

al orden por el descendente recuento hacer

SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC 

este grupo los resultados por la columna group devolver el group y la count y volverá el orden en group fin

+0

Gracias por su asnwer, lo intenté pero devuélveme un resultado por grupo? tales como: Cat, B | Apple, A | Perro, C. –

+0

@IreneLing No incluí el Nombre en la declaración de selección - compruébalo – ManseUK

+0

De acuerdo, gracias por su respuesta y respuesta. –

2
SELECT * FROM table 
group by `Group` 
ORDER BY COUNT(Group) 
+0

Muchas gracias por su respuesta. –

2
SELECT Group, COUNT(*) FROM table GROUP BY Group ORDER BY Group 

o al orden por el recuento

SELECT Group, COUNT(*) AS count FROM table GROUP BY Group ORDER BY count DESC 
+0

Gracias por su respuesta. –

0

A continuación me da lo contrario de lo que tiene. (Columna Aviso Grupo)

SELECT 
    * 
FROM 
    myTable 
GROUP BY 
    Group_value, 
    ID 
ORDER BY 
    count(Group_value) 

Vamos a saber si esto está bien con usted ...

que estoy tratando de conseguir lo que quieres también ...

+0

Gracias por su respuesta, pero lo siento, no me dio el resultado correcto. –

0

Trate mediante el siguiente consulta:

SELECT 
    GROUP, 
    COUNT(*) AS Total_Count 
FROM 
    TABLE 
GROUP BY 
    GROUP 
ORDER BY 
    Total_Count DESC 
0

Q. Enumere el nombre de cada programa y el número de veces que se ha mantenido. Enumera el programa que se ha guardado con mayor frecuencia primero.

event_id show_id event_name judge_id 
0101 01 Dressage  01 
0102 01 Jumping   02 
0103 01 Led in   01 
0201 02 Led in   02 
0301 03 Led in   01 
0401 04 Dressage  04 
0501 05 Dressage  01 
0502 05 Flag and Pole 02 

Respuesta:

select event_name, count(show_id) as held_times from event 
group by event_name 
order by count(show_id) desc