Как вам лучше всего создавать подмножества / промежуточные итоги

#mysql #sql #sum

#mysql #sql #сумма

Вопрос:

У меня есть таблица с 3 столбцами, nr (INT (10), name (varchar (100) и value (INT (10)

 id   name  value
1    aa    10
2    aa    88 
3    bb    20
4    bb    33
5    aa    74
6    bb    66
  

То, что я хочу сделать, это временная таблица или представление, которое практически является подсчетами / промежуточными итогами, основанными на имени, подобном этому:

 id   name  value
1    aa    172
2    bb    66 
  

Я могу сделать это с помощью PHP очень трудоемким способом с большим циклом и несколькими небольшими циклами, но в моей таблице 18000 записей, и это не работает таким образом.

Ответ №1:

Вы могли бы сгруппировать по name :

 SELECT   name, SUM(value)
FROM     mytable
GROUP BY name
  

Редактировать:
Чтобы ответить на вопрос в комментарии, вы можете создать представление из этого запроса, используя create view синтаксис:

 CREATE VIEW myview AS
SELECT   name, SUM(value)
FROM     mytable
GROUP BY name
  

В качестве альтернативы вы можете создать таблицу из него, используя create table синтаксис:

 CREATE TABLE sum_table 
SELECT   name, SUM(value)
FROM     mytable
GROUP BY name
  

Комментарии:

1. но как мне перенести этот результат в таблицу или представление? Мне нужен результат в таблице.

Ответ №2:

Вы также можете использовать SELECT В

ВЫБЕРИТЕ name, SUM(значение) В new_table Из ГРУППЫ mytable ПО имени; ПЕРЕЙДИТЕ

Комментарии:

1. Сервер MySQL не поддерживает ВЫБОР… В расширение TABLE Sybase SQL. Вместо этого сервер MySQL поддерживает вставку В … ВЫБЕРИТЕ стандартный синтаксис SQL, который в основном является тем же самым.

2. В этом случае мы можем использовать приведенную выше таблицу create вместе с запросом select