πŸ” Как вывСсти сумму Π² MySQL: простоС объяснСниС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов πŸ”

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти сумму Π² MySQL, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SUM Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с запросом SELECT. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

SELECT SUM(column_name) FROM table_name;

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ column_name Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ столбца, содСрТащСго значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ table_name Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

НапримСр, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° orders с столбцом total_amount, содСрТащим суммы Π·Π°ΠΊΠ°Π·ΠΎΠ², ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос Π²Π΅Ρ€Π½Π΅Ρ‚ сумму всСх Π·Π°ΠΊΠ°Π·ΠΎΠ²:

SELECT SUM(total_amount) FROM orders;

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

Как вывСсти сумму Π² MySQL?

MySQL прСдоставляСт Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUM(). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти сумму, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, значСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€ΠΎΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ orders, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° amount, содСрТащая сумму Π·Π°ΠΊΠ°Π·Π°:


CREATE TABLE orders (
    id INT,
    amount DECIMAL(10,2)
);

INSERT INTO orders (id, amount)
VALUES (1, 100.50), (2, 50.25), (3, 75.75);
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SUM(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ amount:


SELECT SUM(amount) AS total_amount
FROM orders;
    

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния этого запроса ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

+--------------+
| total_amount |
+--------------+
|       226.50 |
+--------------+
    

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ использовали ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово AS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ псСвдоним total_amount для Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° суммирования. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° сумму ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ это имя.

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ вычислСниС суммы

Часто ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅, сгруппированных ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅. Для этого ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUM() ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° GROUP BY.

ВСрнСмся ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ orders. Допустим, Ρƒ нас Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° customer_id, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π°:


CREATE TABLE orders (
    id INT,
    amount DECIMAL(10,2),
    customer_id INT
);

INSERT INTO orders (id, amount, customer_id)
VALUES (1, 100.50, 1), (2, 50.25, 1), (3, 75.75, 2), (4, 150.00, 2);
    

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π°ΠΊΠ°Π·ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ запрос ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


SELECT customer_id, SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id;
    

Π­Ρ‚ΠΎΡ‚ запрос Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

+-------------+--------------+
| customer_id | total_amount |
+-------------+--------------+
|           1 |       150.75 |
|           2 |       225.75 |
+-------------+--------------+
    

ΠœΡ‹ использовали ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ customer_id Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ GROUP BY, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ этой ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ использовали Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SUM(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ amount для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΈ вычислСниС суммы

Иногда Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ условиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° WHERE.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π° orders ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π°ΠΊΠ°Π·ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ 1:


SELECT SUM(amount) AS total_amount
FROM orders
WHERE customer_id = 1;
    

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ сумма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ amount Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ 1:

+--------------+
| total_amount |
+--------------+
|       150.75 |
+--------------+
    

Π’ этом запросС ΠΌΡ‹ использовали ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ WHERE, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ строки Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ customer_id Ρ€Π°Π²Π½ΠΎ 1. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ использовали Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ SUM(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ amount для Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… строк.

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

ВычислСниС суммы Π² MySQL ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ SUM(). ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для вычислСния суммы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅, суммы Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ ΠΈΠ»ΠΈ вычислСния суммы Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… строк Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

НадСюсь, Ρ‡Ρ‚ΠΎ этот ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ вывСсти сумму Π² MySQL. ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти знания Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с запросами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π».

Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ MySQL!

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

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

MySQL. 11. Count, Sum, Avg

MySQL. Π‘ΡƒΠΌΠΌΠ° Π½Π°Ρ€Π°ΡΡ‚Π°ΡŽΡ‰ΠΈΠΌ ΠΈΡ‚ΠΎΠ³ΠΎΠΌ.

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

πŸ”‘ Как Π²ΠΎΠΉΡ‚ΠΈ Π² MySQL ΠΏΠΎΠ΄ root: простой ΠΈ понятный способ

πŸ” Как вывСсти сумму Π² MySQL: простоС объяснСниС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов πŸ”