Как рассчитать несколько строк на SQL - PullRequest
2 голосов
/ 25 января 2012

У меня есть таблица, которая выглядит примерно так:

ComputerID | Free_Space | Disk_Size
------------------------------------------
Computer1  | 10         | 15
Computer1  | 10         | 10
Computer1  | 05         | 10
Computer2  | 05         | 05
Computer2  | 05         | 10
Computer3  | 11         | 15
Computer3  | 04         | 05

Мне нужно добиться чего-то вроде этого:

ComputerID | Free_Space | Disk_Size
------------------------------------------
Computer1  | 25         | 35
Computer2  | 10         | 15
Computer3  | 15         | 20

Я пробовал что-то подобное, но безуспешно.

 SELECT ComputerID,
 SUM(free_space/1000000000) AS 'Total Free Space',
 SUM(disk_size/1000000000) AS 'Total Size'
 FROM myTable
 ORDER BY ComputerID

Любая помощь будет высоко ценится.

Ответы [ 4 ]

3 голосов
/ 25 января 2012
SELECT ComputerID,
SUM(free_space/1000000000) AS 'Total Free Space',
SUM(disk_size/1000000000) AS 'Total Size'
FROM myTable
GROUP BY ComputerID
2 голосов
/ 25 января 2012

Чтобы достичь того, что вы сейчас задаете, просто сделайте это:

SELECT ComputerID,
SUM(free_space) AS 'Total Free Space',
SUM(disk_size) AS 'Total Size'

FROM myTable

GROUP BY ComputerID

Если значения в байтах, и вы хотите отобразить их в gb do, это выглядит так:

SELECT ComputerID,
SUM(free_space/1073741824) AS 'Total Free Space',
SUM(disk_size/1073741824) AS 'Total Size'

FROM myTable

GROUP BY ComputerID
1 голос
/ 25 января 2012

Любой запрос, использующий агрегатные функции (например, sum ()), смешанный с неагрегированными полями (computerid), должен использовать предложение group by:

SELECT ...
FROM ...
GROUP BY ComputerID
ORDER BY ...
0 голосов
/ 25 января 2012

Вам нужно предложение GROUP BY

SELECT
    ComputerID,
    SUM(free_space/1000000000) AS "Total Free Space",
    SUM(disk_size/1000000000) AS "Total Size"
FROM
    myTable
GROUP BY
    ComputerID
ORDER BY
    ComputerID

Обратите внимание, что большинство диалектов SQL используют одинарные кавычки в качестве разделителей строк и двойные кавычки в качестве разделителей для имен столбцов. С SQL Server вы также можете использовать квадратные скобки

[Total Free Space].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...