MySQL запрос для суммирования одного столбца и подсчета другого столбца из двух таблиц на основе общего значения? - PullRequest
1 голос
/ 30 апреля 2020

У меня проблемы с поиском ответа на вопрос, который я пытаюсь создать. Я надеюсь немного помочь здесь ...

У меня есть две таблицы. Каждая таблица имеет два столбца. Они описываются следующим образом:

Таблица: «Токен»

 Column 1: "Name" varchar(20)
 Column 2: "Color" varchar(10)

Таблица: «Оценка»

 Column 1: "Name" varchar(20)
 Column 2: "Points" Int

Я хочу запрос, в котором каждое имя будет перечислено один раз и с каждым именем сумма Баллов за это имя и число, где Color = "RED"

Пример данных для таблицы 1:

"BOB","GREEN"
"LARRY","RED"
"JIM","BLUE"
"JIM","RED"
"FRANK","RED"
"BOB","BLUE"
"JIM","RED"

Пример данных для таблицы 2:

"LARRY",100
"BOB",40
"JIM",200
"BOB",100
"PAUL",250

Вывод моей таблицы будет аналогичен (порядок строк не важен):

BOB,140,0
LARRY,100,1
JIM,200,2
FRANK,0,1
PAUL,250,0

Как мне выполнить sh это?

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете агрегировать, а затем присоединиться:

select t1.name, t1.reds, t2.points
from (select name, sum(color = 'RED') reds from table1 group by name) t1
inner join (select name, sum(points) points from table2 group by name) t2 
    on t1.name = t2.name

Если в одной из таблиц отсутствует name s, то вместо нее можно использовать union all:

select name, sum(reds) reds, sum(points) points
from 
    select name, 1 reds, 0 points from table1 where color = 'RED'
    union all
    select name, 0, points points from table2
) t 
group by name
...