выбрать для группировки строк - PullRequest
2 голосов
/ 14 мая 2009

У меня есть такая таблица:

Alternative |Total  |Male  |Female
a           |20     |10    |10
b           |50     |20    |30 
c           |40     |10    |30 
c           |30     |15    |15 

Теперь я хочу выбрать все строки и альтернативу "c" для группировки.

Ответы [ 4 ]

3 голосов
/ 14 мая 2009
SELECT Alternative, Sum(Total), Sum(Male), Sum(Female) 
FROM table1 
GROUP BY Alternative
0 голосов
/ 14 мая 2009

Следующий запрос выберет все строки, которые не являются «c», затем сгруппирует все строки, которые являются «c», суммирует их значение и добавит одну строку, представляющую сумму «c». Я надеюсь, что вы это имеете в виду.

SELECT *
FROM table1 
WHERE Alternative != c

UNION

SELECT Alternative, Sum(Total) as Total, Sum(Male) as Male, Sum(Female) as Female
FROM table1 
WHERE Alternative = c
GROUP BY Alternative

Если вы просто хотите сгруппировать все, что имеет несколько «альтернативных» появлений, просто используйте:

SELECT Alternative, Sum(Total) as Total, Sum(Male) as Male, Sum(Female) as Female
FROM table1 
GROUP BY Alternative
0 голосов
/ 14 мая 2009

Используйте group by для определения группировки, затем используйте соответствующий агрегат для обработки других полей. Я считаю, что в этом случае вы хотите использовать sum для добавления значений в каждую группу:

select
   Alternative, sum(Total) as Total, sum(Male) as Male, sum(Female) as Female
from
   TheTable
group by
   Alternative
order by
   Alternative
0 голосов
/ 14 мая 2009

Этого должно хватить

SELECT Alternative, [Total] = SUM(Total), [Male] = SUM(Male), [Female] = SUM(Female)
FROM YourTable
GROUP BY Alternative
...