Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak obliczyć procent kolumny w MySQL?

Czasami może być konieczne obliczenie procentu kolumny (np. sprzedaży, przychodów) w danych, aby zrozumieć, jaki procent łącznej wartości kolumny pochodzi z każdego wiersza (np. kraj, stan itp.). Ponieważ nie ma gotowej funkcji do obliczenia tej wartości, musisz napisać dla niej zapytanie SQL. Oto jak obliczyć procent kolumny w MySQL

Jak obliczyć procent kolumny w MySQL

Załóżmy, że masz poniższą tabelę, jak pokazano poniżej.

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  |
+-------+------+

Załóżmy, że chcesz wyświetlić kolumnę „procent całości”, która jest po prostu procentem całkowitej sprzedaży kolumna, jak pokazano poniżej.

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

Możesz to zrobić na wiele sposobów, używając tylko jednego zapytania. Nie ma potrzeby pisania oddzielnych zapytań do obliczania sumy i procentu. Przyjrzyjmy się każdemu z nich

Przeczytaj dodatkowe: Jak obliczyć procent dwóch kolumn w MySQL

Jak obliczyć procent kolumny w MySQL za pomocą CROSS JOIN

Aby obliczyć procent kolumny w MySQL, możesz po prostu skrzyżować sum() sprzedaży kolumna z oryginalną tabelą.

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        |
+-------+------+------------------+

Jeśli chcesz dodać klauzulę where do filtrowania danych, musisz umieścić ją po CROSS JOIN, jak pokazano poniżej. W przeciwnym razie pojawi się błąd.

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         |
+------+------+------------------+

Jeśli jednak chcesz dodać klauzulę where podczas sumowania kolumny, musisz dodać ją w klauzuli select sumy, jak pokazano poniżej. Powiedzmy, że chcesz wykluczyć Boba z samej sumy, a następnie oto zapytanie, które to zrobi.

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     |
+-------+------+------------------+

Przeczytaj bonus: Jak obliczyć procentowy wzrost z tygodnia na tydzień w MySQL

Jak obliczyć procent kolumny w MySQL za pomocą SUBSELECT/SUBQUERY

Możesz również obliczyć procent kolumny za pomocą podselekcji, zamiast używać JOIN, jak pokazano poniżej.

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        |
+-------+------+------------------+

Jeśli chcesz dodać klauzulę where do filtrowania danych, musisz umieścić ją po CROSS JOIN, jak pokazano poniżej. W przeciwnym razie pojawi się błąd.

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        |
+--------+--------+-------------------+

Jeśli jednak chcesz dodać klauzulę where podczas sumowania kolumny, musisz dodać ją w klauzuli select sumy. Powiedzmy, że chcesz wykluczyć Boba z samej sumy, a następnie oto zapytanie, które to zrobi.

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     |
+-------+------+------------------+

Możesz dostosować powyższe zapytania zgodnie z wymaganiami, aby obliczyć procent kolumny w MySQL.

Ponadto możesz użyć narzędzia do raportowania, aby wykreślić dane na wykresie kołowym lub pulpicie nawigacyjnym. Oto przykład wykresu kołowego utworzonego za pomocą Ubiq.

Jeśli chcesz tworzyć wykresy, dashboardy i raporty z bazy danych MySQL, możesz wypróbować Ubiq. Oferujemy 14-dniowy bezpłatny okres próbny.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z IF EXISTS w MySQL

  2. Wstaw tabelę MySql, jeśli nie istnieje, w przeciwnym razie zaktualizuj

  3. Kompletny system rejestracji użytkowników z wykorzystaniem PHP i bazy danych MySQL

  4. Jak wykonać kopię zapasową / wyeksportować bazę danych MySQL za pomocą PHP

  5. JSON_PRETTY() – Formatuj dokumenty JSON dla łatwiejszej czytelności w MySQL