Выполнение запроса по 2 столбцам, как если бы они были одним - PullRequest
3 голосов
/ 26 мая 2011

Есть 2 столбца, содержащих данные одного и того же типа:

col_a  col_b ...
Bob    Tim   ..
John   Frank .
Bob    John
John   Tim
Bob    Bob
Frank  John

Теперь запрос, который я хочу сделать, выглядит следующим образом (считая вхождения: (Боб, 3), (Джон, 2),..):

SELECT col_a, count(*) AS total FROM table1 GROUP BY col_a

Но вместо того, чтобы запускать его на col_a, я хочу запустить его одновременно на col_a и col_b ((Боб, 4), (Джон, 4), ..)

Любая помощь приветствуется.

edit: СПАСИБО ВСЕМ, ЧТО ВЫ УДИВИТЕЛЬНЫ.

Еще раз спасибо

Ответы [ 3 ]

5 голосов
/ 26 мая 2011
Select Z.name, Count(*) As Total
From    (
        Select col_a As name
        From total
        Union All
        Select col_b
        From total
        ) As Z
Group By Z.name
4 голосов
/ 26 мая 2011
select Name, count(*) as Total
from (
    select col_a as Name from MyTable
    union all
    select col_b from MyTable
) a
group by Name
1 голос
/ 26 мая 2011

Исходя из вашего столбца Bob Bob, я думаю, вам нужно сгруппировать по подзапросам:

select idx, sum(count)
from (
    select col_a as idx, count(*) as count
    from table
    union all
    select col_b as idx, count(*) as count
    where col_a <> col_b -- avoid dups
    ) as counts
group by idx

или

select idx, count(*)
from (
    select col_a as idx
    from table
    union all
    select col_b as idx
    where col_a <> col_b -- avoid dups
    ) as counts
group by idx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...