SQL подзапрос для подсчета функций - PullRequest
1 голос
/ 26 января 2020

Первый столбец - это название населенного пункта, второй столбец - количество избирателей в каждом населенном пункте. Моя проблема в третьем столбце, потому что я пытаюсь подсчитать избирателей, которые являются безработными, но подсчитывает всех избирателей. мой англ sh.

select l.nombre as "Nombre",count(v.dni) as "Votantes",
(select count(v.dni) from localidades l,votantes v
where v.localidad=l.idlocalidad and v.situacionlaboral='Parado') as "Parados"
from votantes v,localidades l
where v.localidad=l.idlocalidad 
group by l.nombre;

это выход:

"Nombre" "Votantes" "Parados"

Sevilla    3          4
Baena      1          4
Córdoba    3          4
Montilla   1          4
Madrid     3          4
Utrera     3          4
Carmona    1          4
Badalona   1          4
Getafe     1          4

Ответы [ 2 ]

0 голосов
/ 26 января 2020

Если вам нужно общее количество голосов, используйте оконные функции:

select l.nombre, count(*) as Votantes,
       sum(count(*)) over () as parados
from votantes v join
     localidades l
     on v.localidad = l.idlocalidad 
group by l.nombre;

Также научитесь использовать правильный, явный, стандартный JOIN синтаксис.

0 голосов
/ 26 января 2020

Попробуйте:

select l.nombre as "Nombre"
       , count(v.dni) as "Votantes"
       , sum(case when situacionlaboral = 'Parado' then 1
              else 0
              end) as "Parados"
from votantes v
join localidades l on v.localidad=l.idlocalidad 
group by l.nombre;

Когда вы объединяете две таблицы, сделайте это следующим образом:

from localidades l 
join votantes v on v.localidad = l.idlocalidad 

И не так:

from localidades l,votantes v
where v.localidad=l.idlocalidad
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...