DJANGO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Sử dụng Aggregate trong Django ORM với Python

Trong bài viết này, mình sẽ học cách sử dụng Django để lấy các giá trị tổng hợp từ cơ sở dữ liệu. Các giá trị tổng hợp bao gồm số lượng (count), giá trị nhỏ nhất (min), giá trị lớn nhất (max), tổng (sum) và giá trị trung bình (avg). Việc sử dụng các hàm tổng hợp này giúp bạn dễ dàng thực hiện các phép tính phức tạp trên dữ liệu, từ đó hỗ trợ phân tích và quản lý thông tin một cách hiệu quả hơn. Mình sẽ minh họa cách sử dụng các hàm này thông qua các ví dụ cụ thể từ ứng dụng quản lý nhân sự (HR) với các model Employee và Department.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cài đặt dữ liệu mới bằng Django

Mình sẽ sử dụng các model Employee và Department từ ứng dụng hr để minh họa. Các model Employee và Department tương ứng với các bảng hr_employee và hr_department trong cơ sở dữ liệu.

Để bắt đầu hướng dẫn, bạn có thể tải xuống mã nguồn dự án tại đây và thực hiện các bước sau:

django orm employee department png

Đầu tiên, thêm trường salary vào model Employee:

Bài viết này được đăng tại [free tuts .net]

class Employee(models.Model):
    salary = models.DecimalField(max_digits=15, decimal_places=2)
    # ...

Thứ hai, tạo các migrations bằng lệnh makemigrations:

python manage.py makemigrations

Kết quả:

Migrations for 'hr':
  hr\migrations\0005_employee_salary.py
    - Add field salary to employee

Áp dụng các thay đổi vào cơ sở dữ liệu bằng lệnh migrate:

python manage.py migrate

Kết quả:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, hr, sessions
Running migrations:
  Applying hr.0005_employee_salary... OK

Cuối cùng, điền giá trị vào cột salary bằng dữ liệu từ file data.json:

python manage.py loaddata data.json

Tải mã nguồn đầy đủ của dự án tại đây.

Giới thiệu về Django aggregate trong Python

Một hàm tổng hợp nhận vào một danh sách các giá trị và trả về một giá trị duy nhất. Các hàm tổng hợp thường được sử dụng bao gồm count, max, min, avg và sum.

Count Django

Đối tượng QuerySet cung cấp phương thức count() trả về số lượng đối tượng mà nó chứa. Ví dụ, bạn có thể sử dụng phương thức count() để lấy số lượng nhân viên:

>>> Employee.objects.count()

Kết quả:

SELECT COUNT(*) AS "__count"
  FROM "hr_employee"        

Max Django

Hàm Max() trả về giá trị lớn nhất trong một tập hợp các giá trị. Nó chấp nhận một cột mà bạn muốn lấy giá trị lớn nhất.

Ví dụ, sau đây sử dụng Max() để trả về mức lương cao nhất:

>>> Employee.objects.aggregate(Max('salary'))

Kết quả:

SELECT MAX("hr_employee"."salary") AS "salary__max"
  FROM "hr_employee"

Min Django

Hàm Min() trả về giá trị nhỏ nhất trong một tập hợp các giá trị. Tương tự như Max(), nó chấp nhận một cột mà bạn muốn lấy giá trị nhỏ nhất.

Ví dụ sau đây sử dụng Min() để trả về mức lương thấp nhất của nhân viên:

>>> Employee.objects.aggregate(Min('salary'))

Kết quả:

SELECT MIN("hr_employee"."salary") AS "salary__min"
  FROM "hr_employee"

Avg Django

Hàm Avg() trả về giá trị trung bình trong một tập hợp các giá trị. Nó chấp nhận tên cột và trả về giá trị trung bình của tất cả các giá trị trong cột đó:

>>> Employee.objects.aggregate(Avg('salary'))

Kết quả:

SELECT AVG("hr_employee"."salary") AS "salary__avg"
  FROM "hr_employee"

Sum Django

Hàm Sum() trả về tổng các giá trị. Ví dụ, bạn có thể sử dụng Sum() để tính tổng mức lương của công ty:

>>> Employee.objects.aggregate(Sum('salary'))

Kết quả:

SELECT SUM("hr_employee"."salary") AS "salary__sum"
  FROM "hr_employee"

Kết bài

Hy vọng qua bài viết này, bạn đã nắm vững cách sử dụng các phương thức tổng hợp trong Django để thao tác và phân tích dữ liệu từ cơ sở dữ liệu một cách hiệu quả. Việc sử dụng phương thức count() giúp bạn đếm số lượng đối tượng trong một QuerySet, trong khi các hàm Max(), Min(), Avg(), và Sum() cho phép bạn tính toán các giá trị lớn nhất, nhỏ nhất, trung bình và tổng của một tập hợp các giá trị. Những công cụ này không chỉ giúp bạn thực hiện các phép tính phức tạp một cách đơn giản mà còn giúp tối ưu hóa quá trình quản lý và khai thác dữ liệu trong các ứng dụng Django.

Cùng chuyên mục:

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Cách thêm Progress Bar trong Python với chỉ một dòng Code

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Toán tử Walrus Operator- Tính năng mới trong Python 3.8

Cách nạp dữ liệu Machine Learning từ File trong Python

Cách nạp dữ liệu Machine Learning từ File trong Python

Hướng dẫn sử dụng Google Sheets API với Python

Hướng dẫn sử dụng Google Sheets API với Python

Xây dựng  web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng web Python tự động hóa Twitter | Flask, Heroku, Twitter API & Google Sheets API

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Xây dựng Web Machine Learning đẹp mắt với Streamlit và Scikit-learn trong Python

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

Hướng dẫn tạo Chatbot đơn giản bằng PyTorch

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

11 mẹo và thủ thuật để viết Code Python hiệu quả hơn

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn làm ứng dụng TODO với Flask dành cho người mới bắt đầu trong Python

Hướng dẫn viết Snake Game bằng Python

Hướng dẫn viết Snake Game bằng Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng chế độ interactive trong Python

Cách sử dụng Python Debugger với hàm breakpoint()

Cách sử dụng Python Debugger với hàm breakpoint()

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Xây dựng ứng dụng Web Style Transfer với PyTorch và Streamlit

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Cách cài đặt Jupyter Notebook trong môi trường Conda và thêm Kernel

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn xây dựng ứng dụng dự đoán giá cổ phiếu bằng Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hướng dẫn tạo ứng dụng AI hội thoại với NVIDIA Jarvis trong Python

Hỗ trợ Async trong Django 3.1

Hỗ trợ Async trong Django 3.1

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic

Ý nghĩa của if __name__ ==

Ý nghĩa của if __name__ == "__main__" trong Python

Cách xóa phần tử trong danh sách Python

Cách xóa phần tử trong danh sách Python

Top