2014-10-12 6 views
0

У меня есть таблица о метрополитене станции и запись record(cid, enter_sid, exit_sid) Я хочу получить общее количество входящих и выходящих из каждой станции. Например,Как совместить результат запроса?

cid enter_sid exit_sid 1 1 2 1 1 2 1 2 3 2 2 1

Я хочу, чтобы получить

sid count(*) 
1   3 
2   4 
3   1 

Я не знаю, как совместить select cid, count(*) from record group by enter_sid и select cid, count(*) from record group by exit_sid

ИДС означает идентификатор карты. Для первой строки моего ожидаемого результата 1 для идентификатора станции, 3 для sid 1, существующего 2 раза в enter_sid и 1 раз в exit_sid.

+0

Что именно ваш 'cid' столбец? –

+0

Как ваш ожидаемый результат совпадает со значениями столбцов и/или счет? –

+0

Идентификатор карты, который в этом случае не имеет большого значения. – cow12331

ответ

2

трюк на это ваш вход и выход sid - это первый столбец, поэтому вам нужно объединить эти два вместе, чтобы получить правильную комбинацию ... оттуда есть простая сумма счета.

SELECT sid, cid, SUM(counting) FROM 
(
    SELECT cid, enter_sid as sid, COUNT(*) as counting FROM record GROUP BY enter_sid 
    UNION ALL 
    SELECT cid, exit_sid as sid, COUNT(*) as counting FROM record GROUP BY exit_sid 
)t 
GROUP BY sid 

Working Fiddle

Смежные вопросы