SQL - Minimo valor de un count

 
Vista:
sin imagen de perfil

Minimo valor de un count

Publicado por Sergio (2 intervenciones) el 17/12/2017 18:00:00
Buenas tardes, estoy intentando realizar una consulta en MySql que trata de averiguar el titulo de el album que tiene menos canciones. Se me acaban las ideas, alguien me puede ayudar? Las tablas son las siguientes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE `Album`
(
    `AlbumId` INT NOT NULL,
    `Title` NVARCHAR(160) NOT NULL,
    `ArtistId` INT NOT NULL,
    CONSTRAINT `PK_Album` PRIMARY KEY  (`AlbumId`)
);
 
CREATE TABLE `Track`
(
    `TrackId` INT NOT NULL,
    `Name` NVARCHAR(200) NOT NULL,
    `AlbumId` INT,
    `MediaTypeId` INT NOT NULL,
    `GenreId` INT,
    `Composer` NVARCHAR(220),
    `Milliseconds` INT NOT NULL,
    `Bytes` INT,
    `UnitPrice` NUMERIC(10,2) NOT NULL,
    CONSTRAINT `PK_Track` PRIMARY KEY  (`TrackId`)
);

He probado con INNER JOIN y tal, pero no hay manera. Muchas gracias por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Minimo valor de un count

Publicado por Rafael (111 intervenciones) el 18/12/2017 09:28:17
Es sencillo

Vamos por partes..


Con esto obtienes el numero de canciones que tiene cada Album supongo esto lo hiciste...
1
2
3
4
5
SELECT A.AlbumID
     , COUNT(T.TrackId)
FROM   Album A
       JOIN Track T ON A.AlbumID = T.TrackId
GROUP BY A.AlbumID

Ahora vamos a obtener el minimo de canciones ... Como ves es simple...
1
2
3
4
5
6
SELECT MIN(Canciones)
FROM   (SELECT A.AlbumID
             , COUNT(T.TrackId) Canciones
        FROM   Album A
               JOIN Track T ON A.AlbumID = T.TrackId
        GROUP BY A.AlbumID) Conteo_Canciones

Ahora tenemos que obtener los titulos .... con ese minimo de canciones...
1
2
3
4
5
6
7
8
9
10
11
12
SELECT A.AlbumID
     , A.Title
     , COUNT(T.TrackId) Canciones
FROM   Album A
       JOIN Track T ON A.AlbumID = T.TrackId
GROUP BY A.AlbumID
HAVING   COUNT(T.TrackId) = (SELECT MIN(Canciones)
                             FROM   (SELECT A.AlbumID
                                          , COUNT(T.TrackId) Canciones
                                     FROM   Album A
                                            JOIN Track T ON A.AlbumID = T.TrackId
                                     GROUP BY A.AlbumID) Conteo_Canciones)

Simple o no???
En principio te debe funcionar... ya nos contaras...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Minimo valor de un count

Publicado por Sergio (2 intervenciones) el 18/12/2017 13:37:05
ufff eso de que es simple..no se yo jajaja ire a probarlo y te contare
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar