mysql - получить процент от столбца, используя сумму и накопление - PullRequest
0 голосов
/ 15 мая 2018

У меня есть таблица, подобная приведенной ниже ... Я запрашиваю их данные, используя запрос под таблицей. Что мне нужно, это рассчитать процент, который формула является сумма (столбец 3) / общая (столбец 3) * 100 или ((0,3333 / 0,9999) * 100). Я искал, но я не нашел ничего, что будет делать с помощью MySQL ... это вообще возможно? Кто-нибудь может дать мне несколько советов?

+----------+---------+----------+--------+
| column1  | column2 | column3 | percentage |
+----------+---------+---------+------------+
| negative |     1   |  0.3333 |     %      |
| neutral  |     1   |  0.3333 |     %      |
| positive |     1   |  0.3333 |     %      |
+----------+---------+----------+-----------+
| Total    |     3   |  0.9999 |     %      |
+----------+---------+----------+-----------+


SELECT 
    column1_text, 
    sum(column2_number) as 'column2', 
    sum(column3_number) as 'column3', 
    percentage_here as 'percentage' 
FROM table 
GROUP BY column1 ASC WITH ROLLUP

1 Ответ

0 голосов
/ 15 мая 2018

Мы можем использовать встроенное представление для вычисления итога и выполнить операцию соединения.

Примерно так:

SELECT t.column1
     , SUM(t.column2_number)  AS `column2`
     , SUM(t.column3_number)  AS `column3`
     , ( 100.0 
       * SUM(t.column3_number)
       / s.col3_tot
       )                      AS `percentage`
  FROM `table` t
 CROSS
  JOIN ( SELECT SUM(q.column3_number) AS col3_tot
           FROM `table` q
       ) s 
 GROUP
    BY t.column1
     , s.col3_tot
 ORDER
    BY t.column1 ASC

MySQL выполняет запрос встроенного представления для материализации производной таблицы s, состоящей из одной строки с общим количеством column3_number.

Эта строка присоединяется к каждой строке, возвращаемой из t, поэтому значение col3_tot доступно в каждой строке, и мы можем использовать его в выражении в списке SELECT.

(я пропустил предложение WITH ROLLUP, чтобы пояснить, что WITH ROLLUP не имеет никакого отношения к получению суммы или вычислению процентов.)

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