/ / Sommation des jeux de résultats dans SQL Server - SQL

Résumer les jeux de résultats dans SQL Server - SQL

Supposons que j'ai un tableau comme ci-dessous:

Class  Student  Maths  English
------------------------------------
1      a        50       60
1      b        -        60
2      c        70       50
2      d        40        -

Et j'ai besoin d'une requête SQL pour produire cet ensemble de résultats:

Score        Maths   English  Total
--------------------------------------
1             50       120     170
2             110       50     160
Grand Total    160       170    330

S'il vous plaît aider.

Réponses:

1 pour la réponse № 1

Essaye ça:

SELECT
ISNULL(Class, "Grand Total") as Score,
sum(Maths) as Maths,
sum(English) as English,
sum(Maths) + sum(English) as Total
FROM
table
GROUP BY
ISNULL(Class, "Grand Total")
WITH ROLLUP

Notez que c'est la syntaxe T-SQL, il faudra peut-être un peu de peaufinage pour MySql ou Oracle.


3 pour la réponse № 2
SELECT
Class,
sum(Maths) as Maths,
sum(English) as English,
sum(Maths+English) as Total
FROM
table
Group by
Class with Rollup

2 pour la réponse № 3

violon sql

J'ai utilisé une union qui n'a pas l'air si élégante

create table the_table
(
class int,
student varchar(5),
maths int,
english int,
)
insert into the_table
values
( 1, "a", 50, 60),
( 1, "b", 0, 60),
( 2, "c", 70, 50),
( 2, "d", 40, 0)

select
[class] = convert(varchar(50),class)
, sum(maths) maths
, sum(english) english
, sum(maths + english) total
from the_table
group by
class
union
select
[class] = "Grand Total"
, sum(maths) maths
, sum(english) english
, sum(maths + english) total
from the_table