2015-01-07 2 views
0

Как добавить строку в конец этого SELECT, чтобы я мог видеть общее количество сгруппированных строк? (Мне нужно в общей сложности за «деньги» и «запросов»:Как добавить «общую» строку в сгруппированном запросе (в Postgresql)?

SELECT 
    organizations.name || ' - ' || section.name as Section, 
    SUM(requests.money) as money, 
    COUNT(*) as requests 
FROM 
    schema.organizations 
    -- INNER JOINs omitted -- 
WHERE 
    -- omitted -- 
GROUP BY 
    -- omitted -- 
ORDER BY 
    -- omitted -- 

Running выше производит:

|*Section* | *Money* | *Requests*| 
|-----------|---------|-----------| 
|BMO - HR |564  |10   | 
|BMO - ITB |14707 |407  | 
|BMO - test |15  |7   | 

Теперь то, что я хочу, чтобы добавить в общей сложности до конца того, что отображения будет :

|BMO - Total|15286 |424  | 

Я попробовал несколько вещей, и в конечном итоге, пытаясь обернуть выбор в с утверждением и отсутствии:

WITH w as (
    --SELECT statement from above-- 
) 
SELECT * FROM w UNION ALL 
    SELECT 'Total', money, requests from w 

Это дает странные результаты (я получаю четыре полных строки - когда должен быть только один.

Любая помощь была бы высоко оценена!

Thanks

+1

Вы должны SUM() результаты: SELECT 'Total', SUM (деньги), SUM (запросов) от w –

ответ

2

Вы можете достичь этого, используя запрос UNION. В приведенном ниже вопросе я добавляю столбец искусственного сортировки и завершаю запрос объединения во внешнем запросе, чтобы линия суммы появилась внизу.

[Я предполагаю, что вы будете добавлять ваши соединения и группы пунктами ...]

SELECT section, money, requests FROM -- outer select, to get the sorting right. 

( SELECT 
     organizations.name || ' - ' || section.name as Section, 
     SUM(requests.money) as money, 
     COUNT(*) as requests, 
     0 AS sortorder -- added a sortorder column 
    FROM 
     schema.organizations 
    INNER JOINs omitted -- 
    WHERE 
     -- omitted -- 
    GROUP BY 
     -- omitted -- 
     -- ORDER BY is not used here 


UNION 

    SELECT 
     'BMO - Total' as section, 
     SUM(requests.money) as money, 
     COUNT(*) as requests, 
     1 AS sortorder 
    FROM 
     schema.organizations 
     -- add inner joins and where clauses as before 
) AS unionquery 

ORDER BY sortorder -- could also add other columns to sort here 
Смежные вопросы