Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изчислим процента на колоната в MySQL

Понякога може да се наложи да изчислите процента на колона (например продажби, приходи) във вашите данни, за да разберете какъв процент от общата стойност на колоната ви идва от всеки ред (например държава, държава и т.н.). Тъй като няма изготвена функция за изчисляване на тази стойност, трябва да напишете SQL заявка за нея. Ето как да изчислите процента на колоната в MySQL

Как да изчислим процента на колоната в MySQL

Да приемем, че имате следната таблица, както е показано по-долу.

mysql> create table sales(rep varchar(255),sale int);

mysql> insert into sales values('Bob',15),('Sally',30),('Peter',15);

mysql> select * from sales;
+-------+------+
|  rep  | sale |
+-------+------+
|  Bob  |  15  |
| Sally |  30  |
| Peter |  15  |
+-------+------+

Да приемем, че искате да покажете колона „процент от общия брой“, който е просто процентът от общата продажба колона, както е показано по-долу.

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Можете да направите това по няколко начина, като използвате само една заявка. Няма нужда да пишете отделни заявки за изчисляване на общата сума и процента. Нека разгледаме всеки един от тях

Бонус за четене: Как да се изчисли процентът на две колони в MySQL

Как да се изчисли процентът на колоната в MySQL с помощта на CROSS JOIN

За да изчислите процента на колоната в MySQL, можете просто да се присъедините кръстосано към sum() наразпродажба колона с оригиналната таблица.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total`
FROM sales
CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t;

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Ако искате да добавите клауза where за филтриране на вашите данни, трябва да я поставите след CROSS JOIN, както е показано по-долу. В противен случай ще получите грешка.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total`
FROM sales
CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t where Rep='Bob';
+------+------+------------------+
| Rep  | Sale | percent of total |
+------+------+------------------+
| Bob  |  15  |       25         |
+------+------+------------------+

Въпреки това, ако искате да добавите клауза where по време на сумиране на колона, трябва да я добавите в клаузата за избор на total, както е показано по-долу. Да речем, че искате да изключите Боб от самата обща сума, след което ето заявка за това.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total` 
FROM sales 
CROSS JOIN (SELECT SUM(sale) AS s FROM sales where Rep<>'Bob') t 
where Rep<>'Bob';
+-------+------+------------------+
|  Rep  | Sale | percent of total |
+-------+------+------------------+
| Sally |  30  |      66.6667     |
| Peter |  15  |      33.3333     |
+-------+------+------------------+

Бонус за четене: Как да се изчисли процентът на растеж седмица през седмицата в MySQL

Как да се изчисли процентът на колоната в MySQL с помощта на SUBSELECT/SUBQUERY

Можете също да изчислите процента на колоната, като използвате подселекция, вместо да използвате JOIN, както е показано по-долу.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total`
FROM sales;

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Ако искате да добавите клауза where за филтриране на вашите данни, трябва да я поставите след CROSS JOIN, както е показано по-долу. В противен случай ще получите грешка.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total` 
FROM sales
where Rep='Bob';
+--------+--------+-------------------+
|   Rep  |  Sale  |  percent of total |
+--------+--------+-------------------+
|  Bob   |    15  |         25        |
+--------+--------+-------------------+

Въпреки това, ако искате да добавите клауза where по време на сумиране на колона, трябва да я добавите в клаузата за избор на total. Да речем, че искате да изключите Боб от самата обща сума, след което ето заявка за това.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales where Rep='Bob') AS `percent of total` 
FROM sales
where Rep='Bob';
+-------+------+------------------+
|  Rep  | Sale | percent of total |
+-------+------+------------------+
| Sally |  30  |      66.6667     |
| Peter |  15  |      33.3333     |
+-------+------+------------------+

Можете да персонализирате горните заявки според вашето изискване за изчисляване на процента на колоната в MySQL.

Освен това можете да използвате инструмент за отчитане, за да начертаете данните в кръгова диаграма или табло. Ето пример за кръгова диаграма, създадена с Ubiq.

Ако искате да създавате диаграми, табла за управление и отчети от MySQL база данни, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете последователност в MySQL

  2. Свързване с DB от разширение за Chrome?

  3. Как да проверя дали съществува ред в MySQL? (т.е. проверете дали съществува имейл в MySQL)

  4. MySQL неправилен ключов файл за таблицата tmp при извършване на множество обединения

  5. Как да импортирам SQL файл с помощта на командния ред в MySQL?