Hướng dẫn sum(case when mysql)

The problem is that b is not understood -- or at best a reference to a column in the table rather than your expression.

This is a general property of SQL. You cannot re-use a column alias in the SELECT, FROM, or WHERE clauses in the same query. You have basically three options in MySQL:

  • Use a subquery
  • Repeat the expression
  • Use a CTE

In this case, there is actually a fourth option, because rewriting the query simplifies the logic:

select date,
       sum(case license_id when 'b' then data.Amount else 0 end) AS b,
       sum(case when license_id in ('b', '1', '2', '3')  then data.Amount else 0 
           end) as c,
from ...

Notice that the form of the case is a little different, where a boolean conditions comes after the when.

Also, single quotes are not needed for column aliases. If you want to prevent problems in your code, only use single quotes for string and date constants.

Pro đang tìm kiếm từ khóa Hướng dẫn case when mysql được Update vào lúc : 2022-09-17 05:00:32 . Với phương châm chia sẻ Bí kíp Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read Post vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Admin lý giải và hướng dẫn lại nha.

Nội dung chính

  • Tìm hiểu lệnh CASE trong MySQL
  • 1) Chức năng & cách sử dụng
  • 2) Tham khảo một số trong những ví dụ
  • Đào sâu hơn
  • Chia Sẻ Link Down Hướng dẫn case when mysql miễn phí


Tìm hiểu lệnh CASE trong MySQL


1) Chức năng & cách sử dụng

– Trong hệ quản trị cơ sở tài liệu MySQL, lệnh CASE được sử dụng để tạo ra những giá trị rất khác nhau nhờ vào những Đk rất khác nhau.

Nội dung chính


  • Tìm hiểu lệnh CASE trong MySQL

  • 1) Chức năng & cách sử dụng

  • 2) Tham khảo một số trong những ví dụ

  • Đào sâu hơn

– Dưới đấy là cú pháp sử dụng lệnh CASE:

CASE WHEN condition1 THEN result1; WHEN condition2 THEN result2; WHEN conditionN THEN resultN; ELSE result;

END

– Khi lệnh CASE được thực thi, nó sẽ kiểm tra lần lượt những Đk (theo thứ tự từ trên xuống), nếu phát hiện được Đk đúng thì nó sẽ kết thúc việc kiểm tra & trả về giá trị nằm tại Đk đó.

– Lưu ý:


  • Nếu không còn Đk nào đúng thì lệnh CASE sẽ trả về giá trị tại mệnh đề ELSE.

  • Nếu không còn Đk nào đúng & không còn mệnh đề ELSE thì lệnh CASE sẽ trả về giá trị NULL.

2) Tham khảo một số trong những ví dụ

– Trong bài học kinh nghiệm tay nghề này, tôi sẽ sử dụng cái bảng Student như phía dưới để làm một số trong những ví dụ minh họa.

ID

FullName

Gender

Age

City

1

Nguyễn Thành Nhân

Nam

22

Cần Thơ

2

Dương Văn Gánh

Nam

19

Sóc Trăng

3

Trần Thanh Trúc

Nữ

27

Hải Phòng Đất Cảng

4

Châu Tinh Trì

Nam

20

Cần Thơ

5

Lê Thị Huỳnh Như

Nữ

24

Bạc Liêu

6

Tì Sa Môn Thiên

Nam

21

Hậu Giang

7

Doãn Chí Bình

Nam

26

Cần Thơ

8

Phạm Thị Thu Hiền

Nữ

18

Vĩnh Long

– Liệt kê tên, tuổi, nhóm tuổi của toàn bộ những sinh viên.


  • Nếu sinh viên có tuổi to nhiều hơn 20 thì nhóm độ tuổi sẽ ghi là “Lớn hơn 20 tuổi”

  • Nếu sinh viên có tuổi bằng 20 thì nhóm độ tuổi sẽ ghi là “Bằng 20 tuổi”

  • Nếu sinh viên có tuổi nằm ngoài hai trường hợp trên thì nhóm độ tuổi sẽ ghi là “Nhỏ hơn 20 tuổi”

SELECT FullName, Age,

CASE

WHEN Age > 20 THEN “Lớn hơn 20 tuổi”

WHEN Age = 20 THEN “Bằng 20 tuổi”

ELSE “Nhỏ hơn 20 tuổi”

END AS AgeGroup

FROM Student;

– Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng tài liệu như phía dưới:

FullName

Age

AgeGroup

Nguyễn Thành Nhân

22

Lớn hơn 20 tuổi

Dương Văn Gánh

19

Nhỏ hơn 20 tuổi

Trần Thanh Trúc

27

Lớn hơn 20 tuổi

Châu Tinh Trì

20

Bằng 20 tuổi

Lê Thị Huỳnh Như

24

Lớn hơn 20 tuổi

Tì Sa Môn Thiên

21

Lớn hơn 20 tuổi

Doãn Chí Bình

26

Lớn hơn 20 tuổi

Phạm Thị Thu Hiền

18

Nhỏ hơn 20 tuổi

– Liệt kê thông tin của toàn bộ những sinh viên.

– Lưu ý: Nếu biểu thức (4 + 10) > 15 là đúng thì sắp xếp thứ tự những sinh viên theo độ tuổi, còn nếu sai thì sắp xếp thứ tự những sinh viên theo giới tính.

SELECT *

FROM Student

ORDER BY

(CASE

WHEN (4+10) > 15 THEN Age

ELSE Gender

END);

– Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng tài liệu như phía dưới:

ID

FullName

Gender

Age

City

1

Nguyễn Thành Nhân

Nam

22

Cần Thơ

2

Dương Văn Gánh

Nam

19

Sóc Trăng

4

Châu Tinh Trì

Nam

20

Cần Thơ

6

Tì Sa Môn Thiên

Nam

21

Hậu Giang

7

Doãn Chí Bình

Nam

26

Cần Thơ

3

Trần Thanh Trúc

Nữ

27

Hải Phòng Đất Cảng

5

Lê Thị Huỳnh Như

Nữ

24

Bạc Liêu

8

Phạm Thị Thu Hiền

Nữ

18

Vĩnh Long

Bài viết được sự được cho phép của tác giả Nguyễn Văn Minh

Bạn đã bao giờ tự hỏi: Trong MySQL, câu lệnh CASE, câu lệnh IF và hàm IF rất khác nhau thế nào? Bạn có thấy phân vân khi chọn một trong ba thứ trên để viết query? Đây không phải vướng mắc mới nhưng nhiều bạn sẽ kinh ngạc khi tiếp xúc với nó. Nhất là lúc bạn vừa khởi đầu tìm hiểu về MySQL và cơ sở tài liệu quan hệ.

Nếu bạn muốn tìm hiểu cơ sở tài liệu là gì và có những loại nào, hãy

tìm hiểu thêm nội dung bài viết này.


Cú pháp

Câu lệnh CASE

CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result …] [ELSE result] ENDCASE WHEN [condition] THEN result [WHEN [condition] THEN result …] [ELSE result] END

Câu lệnh IF

IF condition1 THEN

…statements to execute when condition1 is TRUE…

[ ELSEIF condition2 THEN

…statements to execute when condition1 is FALSE and condition2 is TRUE… ]

[ ELSE

…statements to execute when both condition1 and condition2 are FALSE… ]

END IF;

IF(expr1,expr2,expr3)


Đào sâu hơn

Nhìn vào cú pháp trên đây, ta hoàn toàn có thể thấy, dường như hàm IF ít linh hoạt hơn câu lệnh CASE. Nếu bạn viết thế này:

SELECT IF(movie=”The Matrix”, ‘high’, ‘low’) AS suggestion

Thì bạn hoàn toàn hoàn toàn có thể dùng CASE như vậy này:

SELECT CASE WHEN movie=”The Matrix” THEN ‘high’ ELSE ‘low’ END AS suggestion

Khá là giống nhau đúng không ạ? Trừ việc hàm IF trông ngăn nắp hơn chút ít. Nhưng nếu có nhiều hơn nữa hai nhánh thì sao? Có lẽ bạn sẽ không còn thích viết thế này:

SELECT IF(movie=”The Matrix”, ‘high’, IF(movie=”Endgame”, ‘medium’, ‘low’)) AS suggestion

Mà nên là thế này:

SELECT CASE movie

WHEN = ‘The Matrix’ THEN ‘high’

WHEN = ‘Endgame’ THEN ‘medium’

ELSE ‘low’

END AS suggestion

Nó cũng tương tự như khi ta dùng switch để rẽ

nhánh vậy, tự nhiên vào tự do hơn thật nhiều.

Có một điều bạn phải để ý quan tâm. Trong khi câu lệnh CASE là câu lệnh chuẩn của SQL thì hàm IF lại hoàn toàn không phải. Điều đó có nghĩa gì? Nếu bạn có ý định chuyển sang dùng SQL Server hay PostgreSQL ví dụ điển hình, hàm IF sẽ không còn hề hoạt động và sinh hoạt giải trí nữa.

Ở một diễn biến khác, câu lệnh IF là cái gì đó rất lạ lẫm với hai thứ trên. Nó được sử dụng khi viết thủ tục (procedure). Ví dụ:

CREATE FUNCTION get_suggestion (movie varchar(50))

RETURNS varchar(20)

BEGIN

IF movie=”The Matrix” THEN

return ‘high’;

ELSEIF movie=”Endgame” THEN

return ‘medium’;

ELSE

return ‘low’;

END IF;

END;

Do đó, không nên nhầm lẫn mục tiêu sử dụng của câu lệnh IF

với hàm IF, hay thậm chí còn câu lệnh CASE. Chúng sinh ra vì những “thiên chức” rất khác nhau.

Tải thêm tài liệu liên quan đến nội dung bài viết Hướng dẫn case when mysql

programming

mysql

SUM(CASE WHEN MySQL)

Lower_case_table_names

Reply
0
0
Chia sẻ


Bạn vừa Read nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Review Hướng dẫn case when mysql tiên tiến và phát triển nhất và Share Link Cập nhật Hướng dẫn case when mysql Free.


Giải đáp vướng mắc về Hướng dẫn case when mysql

Nếu sau khi đọc nội dung bài viết Hướng dẫn case when mysql vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha

#Hướng #dẫn #case #mysql