epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
777
Hola a todos...no pillo como sacar una tercera columna que indique el %.

Tengo una tabla la cual tiene entre sus columnas la de "region", pero no tienen cantidad, y tampoco la de porcentaje(que es justo la que quiero meter)

con esta linea saco lo de la imagen:

SELECT region as Region, COUNT(region) as Cantidad FROM pacientes GROUP BY region, PERO como le puedo meter para que agreue tambien el porcentaje al lado de cada registro?

1664305583515.png



Gracias ;)
 

Cosme

Gold Member
Se incorporó
27 Febrero 2005
Mensajes
8.255
Podrias meter una subquery, pero depende mucho del volumen de registros vs el rendimiento que quieres alcanzar.

select
region as region,
count(region) as cantidad,
(count(region) / (select sum(region) from pacientes) )* 100 as Porcentaje
from pacientes
group by region
 
Upvote 0

epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
777
uuhh justo habia pillado esto:


SELECT pacientes.region, COUNT( pacientes.id_paciente ) AS sx,
( SELECT COUNT( pacientes.region ) *100 / COUNT( A.id_paciente )
FROM pacientes AS A
) AS porcentaje
FROM pacientes
GROUP BY pacientes.region

¿se ve bien o no?
 
Upvote 0

ricm

Se incorporó
28 Agosto 2005
Mensajes
7.530
Usas php no? Tambien podrias hacer la matematica en php mismo y te ahorras las subconsultas y estresas menos la db. Esto es valido para todos los lenguajes casi.

Ej pho podrías hacer algo del estilo
Código:
while($array){
    $total+=$array['cantidad'];
}
 
Última modificación:
Upvote 0

epic

Pro
Se incorporó
11 Febrero 2007
Mensajes
777
Usas php no? Tambien podrias hacer la matematica en php mismo y te ahorras las subconsultas y estresas menos la db. Esto es valido para todos los lenguajes casi.

El sistema esta en PHP, pero ahora para este tema estoy utilizando Grafana, asi que las consultas deben ir en sql ya que van directamente a mysql.
 
Última modificación:
Upvote 0

Amenadiel

Ille qui nos omnes servabit
Fundador
OVERLORD
REPORTERO
Se incorporó
15 Enero 2004
Mensajes
18.398
Puedes usar window functions para obtener agregados arbitrarios

SQL:
SELECT id_region,

              COUNT(*) as cantidad,

             100*(COUNT(*) / COUNT(*) OVER (PARTITION BY NULL)) as porcentaje

  FROM pacientes

  GROUP BY id_region

ahí dice: (el conteo por región)/(partido por el conteo de entre todo).

Quizá un ejemplo más claro sería sI quisieras listar los resultados por comuna, y calcular el aporte porcentual de cada una a nivel regional. Onda


SQL:
SELECT id_region,
               id_comuna,
              COUNT(*) as cantidad,

             100*(COUNT(*) / COUNT(*) OVER (PARTITION BY id_region)) as porcentaje

  FROM pacientes

  GROUP BY id_region, id_comuna

Se llaman window functions porque me permiten declarar arbitrariamente una ventana flotante de agregación .
 
Upvote 0

OmniRam

Miembro Regular
Se incorporó
8 Septiembre 2012
Mensajes
33
Por leer rapido, lei el titulo del posteo como "consulta rql" y me meti pa ver que tan exasperante era la consulta. Y na que ver, ni cacho de que hablan mas encima :xd:xd:xd:xd:xd
 
Upvote 0
Subir