Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tính phần trăm cột trong MySQL

Đôi khi, bạn có thể cần phải tính toán phần trăm của một cột (ví dụ:doanh số, doanh thu) trong dữ liệu của mình để hiểu phần trăm tổng giá trị của cột của bạn đến từ mỗi hàng (ví dụ:quốc gia, tiểu bang, v.v.). Vì không có hàm out-of-box nào để tính giá trị này, bạn cần viết một truy vấn SQL cho nó. Đây là cách tính phần trăm cột trong MySQL

Cách tính phần trăm cột trong MySQL

Giả sử bạn có bảng sau như được hiển thị bên dưới.

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

Giả sử bạn muốn hiển thị cột 'phần trăm tổng số', cột này chỉ đơn giản là phần trăm của tổng số doanh số bán hàng như được hiển thị bên dưới.

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

Bạn có thể thực hiện việc này theo nhiều cách chỉ bằng một truy vấn duy nhất. Không cần phải viết các truy vấn riêng biệt để tính toán tổng số và tỷ lệ phần trăm. Hãy xem xét từng người trong số họ

Phần thưởng đã đọc:Cách tính Tỷ lệ phần trăm của hai cột trong MySQL

Cách tính phần trăm cột trong MySQL bằng CROSS JOIN

Để tính toán phần trăm cột trong MySQL, bạn có thể chỉ cần kết hợp chéo với sum () trong tổng số giảm giá với bảng gốc.

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

Nếu bạn muốn thêm mệnh đề where để lọc dữ liệu của mình, bạn cần đặt mệnh đề đó sau CROSS JOIN, như được hiển thị bên dưới. Nếu không, bạn sẽ gặp lỗi.

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

Tuy nhiên, nếu bạn muốn thêm mệnh đề where trong tổng số cột, bạn cần thêm nó vào mệnh đề select of total, như hình dưới đây. Giả sử, bạn muốn loại trừ Bob khỏi tổng số, thì đây là một truy vấn để thực hiện điều đó.

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

Phần thưởng đã đọc:Cách tính phần trăm tăng trưởng hàng tuần trong MySQL

Cách tính phần trăm cột trong MySQL bằng SUBSELECT / SUBQUERY

Bạn cũng có thể tính toán tỷ lệ phần trăm của cột bằng cách sử dụng một lựa chọn con, thay vì sử dụng THAM GIA, như được hiển thị bên dưới.

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

Nếu bạn muốn thêm mệnh đề where để lọc dữ liệu của mình, bạn cần đặt mệnh đề đó sau CROSS JOIN, như được hiển thị bên dưới. Nếu không, bạn sẽ gặp lỗi.

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

Tuy nhiên, nếu bạn muốn thêm mệnh đề where trong tổng số cột, bạn cần thêm nó vào mệnh đề select của tổng số. Giả sử, bạn muốn loại trừ Bob khỏi tổng số, thì đây là một truy vấn để thực hiện điều đó.

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

Bạn có thể tùy chỉnh các truy vấn trên theo yêu cầu của mình để tính phần trăm cột trong MySQL.

Hơn nữa, bạn có thể sử dụng công cụ báo cáo để vẽ dữ liệu trong biểu đồ hình tròn hoặc trang tổng quan. Dưới đây là ví dụ về biểu đồ hình tròn được tạo bằng Ubiq.

Nếu bạn muốn tạo biểu đồ, trang tổng quan và báo cáo từ cơ sở dữ liệu MySQL, bạn có thể thử Ubiq. Chúng tôi cung cấp bản dùng thử miễn phí 14 ngày.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ QUARTER () - MySQL

  2. SQLite - ĐẶT HÀNG BẰNG RAND ()

  3. Có thể thực hiện một khóa ngoại MySQL cho một trong hai bảng khả thi không?

  4. Làm thế nào để có được kích thước cơ sở dữ liệu MySQL cho cơ sở dữ liệu của bạn?

  5. ClassCastException:java.math.BigInteger không thể được truyền sang java.lang.Long khi kết nối với MySQL