πŸ”’ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму Π² MySQL: простой способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму Π² MySQL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SUM(). Π­Ρ‚Π° функция примСняСтся ΠΊ столбцу, содСрТащСму числовыС значСния, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сумму этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

SELECT SUM(column_name) FROM table_name;

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ "column_name" Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ столбца, содСрТащСго числовыС значСния, ΠΈ "table_name" Π½Π° имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится этот столбСц.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму Π² MySQL?

MySQL - это рСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, которая позволяСт Π½Π°ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ вычислСниС суммы чисСл. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² MySQL, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ запросы Π½Π° языкС SQL.

1. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUM()

Ѐункция SUM() являСтся встроСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ MySQL, которая позволяСт Π½Π°ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

SELECT SUM(column_name) FROM table_name;

Π—Π΄Π΅ΡΡŒ "column_name" прСдставляСт имя столбца, сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, Π° "table_name" - имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится этот столбСц.

НапримСр, допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° "orders" с ΠΏΠΎΠ»Π΅ΠΌ "amount", ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит суммы Π·Π°ΠΊΠ°Π·ΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ сумму Π·Π°ΠΊΠ°Π·ΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

SELECT SUM(amount) FROM orders;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого запроса Π±ΡƒΠ΄Π΅Ρ‚ общая сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² столбцС "amount".

2. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ GROUP BY

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GROUP BY.

SELECT column_name, SUM(column_name) FROM table_name GROUP BY column_name;

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ столбСц, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, послС Ρ‡Π΅Π³ΠΎ вычисляСм сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹.

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° "sales" с полями "product" ΠΈ "quantity". Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму ΠΏΡ€ΠΎΠ΄Π°ΠΆ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

SELECT product, SUM(quantity) FROM sales GROUP BY product;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого запроса Π±ΡƒΠ΄Π΅Ρ‚ список ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠΌ сумм ΠΏΡ€ΠΎΠ΄Π°ΠΆ.

3. ИспользованиС условия WHERE

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ условиС WHERE вмСстС с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ SUM().

SELECT SUM(column_name) FROM table_name WHERE condition;

Π—Π΄Π΅ΡΡŒ "condition" прСдставляСт условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ значСния столбца, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Π² вычислСниС суммы.

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° "products" с полями "name" ΠΈ "price". Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Ρ†Π΅Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ†Π΅Π½Π° большС 50, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

SELECT SUM(price) FROM products WHERE price > 50;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого запроса Π±ΡƒΠ΄Π΅Ρ‚ сумма Ρ†Π΅Π½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ "Ρ†Π΅Π½Π° большС 50".

4. ИспользованиС подзапросов

Если Ρƒ вас Π΅ΡΡ‚ΡŒ слоТноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ нСсколько запросов, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ подзапросы для вычислСния суммы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

SELECT (SELECT SUM(column_name) FROM table_name) AS total_sum;

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ запрос Π½Π° вычислСниС суммы Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ запрос ΠΈ Π·Π°Π΄Π°Π΅ΠΌ Π΅ΠΌΡƒ псСвдоним "total_sum".

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ "orders" ΠΈ "payments" с полями "amount". Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ сумму Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ Π² ΠΎΠ±ΠΎΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

SELECT (SELECT SUM(amount) FROM orders) + (SELECT SUM(amount) FROM payments) AS total_sum;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этого запроса Π±ΡƒΠ΄Π΅Ρ‚ общая сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца "amount" ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†.

5. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ IFNULL ΠΈΠ»ΠΈ COALESCE

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ NULL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ IFNULL ΠΈΠ»ΠΈ COALESCE для Π·Π°ΠΌΠ΅Π½Ρ‹ NULL Π½Π° 0 ΠΏΠ΅Ρ€Π΅Π΄ вычислСниСм суммы.

SELECT SUM(IFNULL(column_name, 0)) FROM table_name;
SELECT SUM(COALESCE(column_name, 0)) FROM table_name;

Π—Π΄Π΅ΡΡŒ "column_name" прСдставляСт имя столбца, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ NULL значСния, Π° "table_name" - имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится этот столбСц.

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° "sales" с ΠΏΠΎΠ»Π΅ΠΌ "amount", Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ NULL значСния. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца "amount", замСняя NULL Π½Π° 0, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ запросы:

SELECT SUM(IFNULL(amount, 0)) FROM sales;
SELECT SUM(COALESCE(amount, 0)) FROM sales;

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ этих запросов Π±ΡƒΠ΄Π΅Ρ‚ сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца "amount", Π³Π΄Π΅ NULL значСния Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° 0.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ВычислСниС суммы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² MySQL вСсьма простой процСсс. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SUM() для вычислСния ΠΎΠ±Ρ‰Π΅ΠΉ суммы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² столбцС ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ GROUP BY для вычислСния суммы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ условиС WHERE ΠΈΠ»ΠΈ подзапросы для Π±ΠΎΠ»Π΅Π΅ слоТных вычислСний. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ NULL значСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ IFNULL ΠΈΠ»ΠΈ COALESCE.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

SQL. SUM() OVER. Π‘ΡƒΠΌΠΌΠ° Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹ΠΌ ΠΈΡ‚ΠΎΠ³ΠΎΠΌ ΠΈ общая сумма ΠΏΠΎ полю.

MySQL. 11. Count, Sum, Avg

Ѐункция SUM (SQL для ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ MySQL Π½Π° Windows: подробная инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”’ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму Π² MySQL: простой способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов