2015-12-11 2 views
0

Для данной таблицыМогу ли я использовать агрегатную функцию без сворачивания, вызванную группой?

a b c 
---|---|--- 
1 2 3 
1 4 5 
2 6 7 

Запрос

SELECT 
    COUNT(a) as d 
GROUP BY 
    a 

Возвращает

d b c 
---|---|--- 
2 2 3 
1 6 7 

И я хотел бы иметь b и c значения столбцов, чтобы остаться видимым. Мне нужно использовать COUNT, но это невозможно без использования GROUP BY. Есть ли способ, чтобы получить следующий результат от исходной таблицы:

d b c 
---|---|--- 
2 2 3 
2 4 5 
1 6 7 

d значение столбцов представляет то, что COUNT(a) бы вернуться без скатывания (группировки) строки.

ответ

1
drop table if exists t; 
CREATE TABLE t (a int, b int, c int); 
Insert Into t values 
(1, 2 , 3), 
(1, 4 , 5), 
(2 , 6 , 7); 

select d, b, c 
    from t 
    left join 
     (SELECT a, COUNT(a) as d 
      from t 
      GROUP BY a) t1 
    on t1.a = t.a 

example on sqlfiddle

+0

Спасибо, что было красиво – Bramastic

+0

Вас! – splash58