2017-04-03 11 views
2

enter image description hereを行う必要があり、私はBegginerだと私はいくつかの助けが必要こんにちは、私はこれは私がこのSELECTを実行した後、私が得るものですPostgreSQLはTOTAL ROW

SELECT round(SUM(Cena)::NUMERIC,2) AS CelkovaCena, a.Meno, a.Priezvisko,Nazov 
FROM Predstavenie 
JOIN Autor a ON Predstavenie.ID_Autor = a.ID_Autor 
WHERE a.Meno = 'Juraj' AND a.Priezvisko = 'Klein' 
GROUP BY a.Meno,a.Priezvisko,Nazov; 

私のSQLデータベースにこのコードを持っています。

2.2 | Juraj | Klein | Po východe slnka 
5.4 | Juraj | Klein | Ako išiel Ferenc po hlavnej 
0.5 | Juraj | Klein | Protialkoholické hnutie Klein Ferenc PHKF 

私は、以下の列をcol "cena"から作成する必要があります。私はこれのようなものを持っている必要があります。

2.2 | Juraj | Klein | Po východe slnka 
5.4 | Juraj | Klein | Ako išiel Ferenc po hlavnej 
0.5 | Juraj | Klein | Protialkoholické hnutie Klein Ferenc PHKF 
8.1 |      |       |  

グループのためにロールアップが機能していないようです。私はインターネット上でさまざまなソリューションを探しましたが、どれも動作しません...ありがとうございました。

+0

「ロールアップ」を実行するとどうなりますか? –

答えて

3

使用GROUPING SETS

SELECT round(SUM(Cena)::NUMERIC,2) AS CelkovaCena, a.Meno, 
     a.Priezvisko, Nazov 
FROM Predstavenie p JOIN 
    Autor a 
    ON p.ID_Autor = a.ID_Autor 
WHERE a.Meno = 'Juraj' AND a.Priezvisko = 'Klein' 
GROUP BY GROUPING SETS ((a.Meno, a.Priezvisko, Nazov),()); 

これはROLLUPのようですが、それはあなたが明示的にしたい集計行を一覧表示することができます。

0

高速な方法で

SELECT round(SUM(Cena)::NUMERIC,2) AS CelkovaCena, a.Meno, a.Priezvisko,Nazov 
FROM Predstavenie 
JOIN Autor a ON Predstavenie.ID_Autor = a.ID_Autor 
WHERE a.Meno = 'Juraj' AND a.Priezvisko = 'Klein' 
GROUP BY a.Meno,a.Priezvisko,Nazov 
union all 
SELECT round(SUM(Cena)::NUMERIC,2) AS CelkovaCena,null as Meno,null as Nazov 
FROM Predstavenie 
JOIN Autor a ON Predstavenie.ID_Autor = a.ID_Autor 
WHERE a.Meno = 'Juraj' AND a.Priezvisko = 'Klein' 

が、より良いアプローチ総

0

WITHUNIONを組み合わせることで計算する新しいクエリを作成しているあなたはサブクエリでこれを入れた場合は、必要なものを得ることができます。

WITH subq AS (SELECT round(SUM(Cena)::NUMERIC,2) AS CelkovaCena, a.Meno, a.Priezvisko,Nazov 
FROM Predstavenie 
JOIN Autor a ON Predstavenie.ID_Autor = a.ID_Autor 
WHERE a.Meno = 'Juraj' AND a.Priezvisko = 'Klein' 
GROUP BY a.Meno,a.Priezvisko,Nazov) 
SELECT * FROM subq 
UNION 
SELECT SUM(CelkovaCena), '', '', '' FROM subq; 

これにより、結果を2回取得する必要がなくなり、不必要に物事を遅らせる必要がなくなります。 SELECTにはすべて、最初のものと同じ番号とタイプの列があることを確認してください。