Mệnh đề
WHERE condition
9 cho phép bạn chỉ định một hoặc nhiều truy vấn con có thể được tham chiếu theo tên trong truy vấn chính. Các truy vấn con hoạt động hiệu quả như các bảng hoặc dạng xem tạm thời trong suốt thời gian của truy vấn chính. Mỗi truy vấn con có thể là một câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
2, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
3, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
4, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
5 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
6. Khi viết một câu lệnh sửa đổi dữ liệu [GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
4, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
5 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
6] trong WHERE condition
9, thường bao gồm một mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11. Đó là đầu ra của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11, không phải bảng bên dưới mà câu lệnh sửa đổi, tạo thành bảng tạm thời được đọc bởi truy vấn chính. Nếu GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11 bị bỏ qua, câu lệnh vẫn được thực thi, nhưng nó không tạo ra kết quả nào nên nó không thể được tham chiếu dưới dạng bảng bởi truy vấn chínhTên [không có trình độ giản đồ] phải được chỉ định cho mỗi truy vấn
WHERE condition
9. Theo tùy chọn, có thể chỉ định danh sách tên cột; Nếu
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
15 được chỉ định, nó cho phép truy vấn con GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 tự tham chiếu theo tên. Một truy vấn con như vậy phải có dạngGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
7nơi tự tham chiếu đệ quy phải xuất hiện ở phía bên phải của
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17. Chỉ cho phép một tham chiếu đệ quy cho mỗi truy vấn. Câu lệnh sửa đổi dữ liệu đệ quy không được hỗ trợ nhưng bạn có thể sử dụng kết quả của truy vấn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 đệ quy trong câu lệnh sửa đổi dữ liệu. Xem Phần 7. 8 làm ví dụMột hiệu ứng khác của
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
15 là các truy vấn của WHERE condition
9 không cần phải sắp xếp thứ tự. một truy vấn có thể tham chiếu đến một truy vấn khác sau này trong danh sách. [Tuy nhiên, các tham chiếu vòng hoặc đệ quy lẫn nhau không được triển khai. ] Không có truy vấn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
15, truy vấn WHERE condition
9 chỉ có thể tham chiếu truy vấn anh chị em WHERE condition
9 truy vấn sớm hơn trong danh sách WHERE condition
9Khi có nhiều truy vấn trong mệnh đề
WHERE condition
9, thì chỉ nên viết GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
15 một lần, ngay sau WHERE condition
9. Nó áp dụng cho tất cả các truy vấn trong mệnh đề WHERE condition
9, mặc dù nó không ảnh hưởng đến các truy vấn không sử dụng tham chiếu đệ quy hoặc chuyển tiếpMệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 tùy chọn tính toán cột trình tự tìm kiếm có thể được sử dụng để sắp xếp thứ tự kết quả của truy vấn đệ quy theo thứ tự chiều rộng hoặc chiều sâu trước. Danh sách tên cột được cung cấp chỉ định khóa hàng sẽ được sử dụng để theo dõi các hàng đã truy cập. Một cột có tên GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
10 sẽ được thêm vào danh sách cột kết quả của truy vấn WHERE condition
9. Cột này có thể được sắp xếp theo thứ tự trong truy vấn bên ngoài để đạt được thứ tự tương ứng. Xem Phần 7. 8. 2. 1 ví dụMệnh đề tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
12 được sử dụng để phát hiện các chu kỳ trong các truy vấn đệ quy. Danh sách tên cột được cung cấp chỉ định khóa hàng sẽ được sử dụng để theo dõi các hàng đã truy cập. Một cột có tên GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
13 sẽ được thêm vào danh sách cột kết quả của truy vấn WHERE condition
9. Cột này sẽ được đặt thành GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
15 khi một chu kỳ được phát hiện, nếu không thì thành GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
16. Hơn nữa, quá trình xử lý liên kết đệ quy sẽ dừng lại khi một chu trình được phát hiện. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
15 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
16 phải là hằng số và chúng phải bắt buộc đối với một kiểu dữ liệu chung và kiểu dữ liệu phải có toán tử bất đẳng thức. [Chuẩn SQL yêu cầu chúng phải là hằng số Boolean hoặc chuỗi ký tự, nhưng PostgreSQL không yêu cầu điều đó. ] Theo mặc định, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
19 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
10 [thuộc loại GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11] được sử dụng. Hơn nữa, một cột có tên GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
12 sẽ được thêm vào danh sách cột kết quả của truy vấn WHERE condition
9. Cột này được sử dụng nội bộ để theo dõi các hàng đã truy cập. Xem Phần 7. 8. 2. 2 ví dụCả mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
12 chỉ hợp lệ cho các truy vấn WHERE condition
9 đệ quy. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 phải là một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 [hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
19] gồm hai lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 [hoặc tương đương] [không có các lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 lồng nhau]. Nếu cả hai mệnh đề được sử dụng, cột được thêm bởi mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 sẽ xuất hiện trước các cột được thêm bởi mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
12Truy vấn chính và truy vấn
WHERE condition
9 đều được thực hiện [theo danh nghĩa] cùng một lúc. Điều này ngụ ý rằng tác động của câu lệnh sửa đổi dữ liệu trong WHERE condition
9 không thể được nhìn thấy từ các phần khác của truy vấn, ngoài việc đọc đầu ra GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11 của nó. Nếu hai câu lệnh sửa đổi dữ liệu như vậy cố gắng sửa đổi cùng một hàng, kết quả sẽ không được chỉ địnhMột thuộc tính quan trọng của truy vấn
WHERE condition
9 là chúng thường chỉ được đánh giá một lần cho mỗi lần thực hiện truy vấn chính, ngay cả khi truy vấn chính đề cập đến chúng nhiều lần. Đặc biệt, các câu lệnh sửa đổi dữ liệu được đảm bảo thực hiện một lần và chỉ một lần, bất kể truy vấn chính đọc tất cả hay bất kỳ đầu ra nào của chúngTuy nhiên, truy vấn
WHERE condition
9 có thể được đánh dấu GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 để loại bỏ bảo đảm này. Trong trường hợp đó, truy vấn WHERE condition
9 có thể được xếp vào truy vấn chính giống như thể nó là một ______11 phụ đơn giản trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 của truy vấn chính. Điều này dẫn đến tính toán trùng lặp nếu truy vấn chính đề cập đến truy vấn WHERE condition
9 đó nhiều lần; . GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 bị bỏ qua nếu nó được đính kèm với truy vấn WHERE condition
9 là truy vấn đệ quy hoặc không có tác dụng phụ [i. e. , không phải là một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 đơn giản không chứa các hàm dễ bay hơi]Theo mặc định, một truy vấn
WHERE condition
9 không có tác dụng phụ được đưa vào truy vấn chính nếu nó được sử dụng chính xác một lần trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 của truy vấn chính. Điều này cho phép tối ưu hóa chung hai cấp độ truy vấn trong các tình huống mà điều đó sẽ ẩn về mặt ngữ nghĩa. Tuy nhiên, việc gấp như vậy có thể được ngăn chặn bằng cách đánh dấu truy vấn WHERE condition
9 là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32. Điều đó có thể hữu ích, ví dụ: nếu truy vấn WHERE condition
9 đang được sử dụng làm hàng rào tối ưu hóa để ngăn người lập kế hoạch chọn một kế hoạch tồi. Các phiên bản PostgreSQL trước v12 chưa bao giờ gấp như vậy, vì vậy các truy vấn được viết cho các phiên bản cũ hơn có thể dựa vào WHERE condition
9 để hoạt động như một hàng rào tối ưu hóaXem Phần 7. 8 để biết thêm thông tin
Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32
grouping_element
[, ...]
Mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 chỉ định một hoặc nhiều bảng nguồn cho GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1. Nếu nhiều nguồn được chỉ định, kết quả là tích Descartes [nối chéo] của tất cả các nguồn. Nhưng thông thường, các điều kiện đủ điều kiện được thêm vào [thông qua GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38] để hạn chế các hàng được trả về trong một tập con nhỏ của tích DescartesMệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 có thể chứa các phần tử sauWHERE condition
00Tên [tùy chọn lược đồ đủ điều kiện] của một bảng hoặc dạng xem hiện có. Nếu
WHERE condition
01 được chỉ định trước tên bảng, thì chỉ bảng đó được quét. Nếu WHERE condition
01 không được chỉ định, bảng và tất cả các bảng con của nó [nếu có] sẽ được quét. Theo tùy chọn, có thể chỉ định WHERE condition
03 sau tên bảng để biểu thị rõ ràng rằng các bảng con được bao gồmWHERE condition
04Tên thay thế cho mục
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 có chứa bí danh. Một bí danh được sử dụng cho ngắn gọn hoặc để loại bỏ sự mơ hồ đối với việc tự tham gia [trong đó cùng một bảng được quét nhiều lần]. Khi một bí danh được cung cấp, nó sẽ ẩn hoàn toàn tên thực của bảng hoặc hàm; . Nếu bí danh được viết, danh sách bí danh cột cũng có thể được viết để cung cấp tên thay thế cho một hoặc nhiều cột của bảngWHERE condition
11 [ WHERE condition
12 [,. ] ] [ LẶP LẠI [ WHERE condition
13 ] ]Mệnh đề
WHERE condition
14 sau WHERE condition
00 chỉ ra rằng nên sử dụng WHERE condition
16 đã chỉ định để truy xuất tập hợp con của các hàng trong bảng đó. Việc lấy mẫu này diễn ra trước khi áp dụng bất kỳ bộ lọc nào khác, chẳng hạn như điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38. Bản phân phối PostgreSQL tiêu chuẩn bao gồm hai phương pháp lấy mẫu, WHERE condition
18 và WHERE condition
19, và các phương pháp lấy mẫu khác có thể được cài đặt trong cơ sở dữ liệu thông qua tiện ích mở rộngMỗi phương pháp lấy mẫu
WHERE condition
18 và WHERE condition
19 chấp nhận một WHERE condition
12 duy nhất là một phần của bảng để lấy mẫu, được biểu thị bằng phần trăm trong khoảng từ 0 đến 100. Đối số này có thể là bất kỳ biểu thức có giá trị WHERE condition
23 nào. [Các phương pháp lấy mẫu khác có thể chấp nhận nhiều đối số hơn hoặc khác nhau. ] Hai phương pháp này đều trả về một mẫu được chọn ngẫu nhiên của bảng sẽ chứa xấp xỉ tỷ lệ phần trăm các hàng của bảng đã chỉ định. Phương pháp WHERE condition
18 quét toàn bộ bảng và chọn hoặc bỏ qua các hàng riêng lẻ một cách độc lập với xác suất được chỉ định. Phương pháp WHERE condition
19 thực hiện lấy mẫu cấp khối với mỗi khối có cơ hội được chọn cụ thể; . Phương pháp WHERE condition
19 nhanh hơn đáng kể so với phương pháp WHERE condition
18 khi tỷ lệ phần trăm lấy mẫu nhỏ được chỉ định, nhưng nó có thể trả về một mẫu ít ngẫu nhiên hơn của bảng do hiệu ứng phân cụmMệnh đề tùy chọn
WHERE condition
28 chỉ định một số hoặc biểu thức WHERE condition
13 để sử dụng để tạo các số ngẫu nhiên trong phương pháp lấy mẫu. Giá trị hạt giống có thể là bất kỳ giá trị dấu phẩy động không null nào. Hai truy vấn xác định cùng giá trị seed và WHERE condition
12 sẽ chọn cùng một mẫu của bảng, nếu bảng không bị thay đổi trong thời gian đó. Nhưng các giá trị hạt giống khác nhau thường sẽ tạo ra các mẫu khác nhau. Nếu WHERE condition
28 không được cung cấp thì một mẫu ngẫu nhiên mới sẽ được chọn cho mỗi truy vấn, dựa trên nguồn gốc do hệ thống tạo. Lưu ý rằng một số phương pháp lấy mẫu bổ sung không chấp nhận WHERE condition
28 và sẽ luôn tạo ra các mẫu mới trong mỗi lần sử dụngWHERE condition
33Một sub-
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 có thể xuất hiện trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32. Điều này hoạt động như thể đầu ra của nó được tạo dưới dạng bảng tạm thời trong suốt thời gian của lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 duy nhất này. Lưu ý rằng phụ_____11 phải được bao quanh bởi dấu ngoặc đơn và phải cung cấp bí danh cho nó. Lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
3 cũng có thể được sử dụng ở đâyWHERE condition
39Truy vấn
WHERE condition
9 được tham chiếu bằng cách viết tên của nó, giống như tên của truy vấn là tên bảng. [Thực tế, truy vấn WHERE condition
9 ẩn bất kỳ bảng thực nào cùng tên cho mục đích của truy vấn chính. Nếu cần, bạn có thể tham khảo một bảng thực cùng tên bằng lược đồ xác định tên của bảng. ] Bí danh có thể được cung cấp theo cách tương tự như đối với bảngWHERE condition
42Lời gọi hàm có thể xuất hiện trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32. [Điều này đặc biệt hữu ích cho các hàm trả về tập kết quả, nhưng bất kỳ hàm nào cũng có thể được sử dụng. ] Điều này hoạt động như thể đầu ra của hàm được tạo dưới dạng bảng tạm thời trong suốt thời gian của lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 duy nhất này. Nếu loại kết quả của hàm là hỗn hợp [bao gồm cả trường hợp hàm có nhiều tham số WHERE condition
45], thì mỗi thuộc tính sẽ trở thành một cột riêng biệt trong bảng ẩnKhi mệnh đề
WHERE condition
46 tùy chọn được thêm vào lệnh gọi hàm, một cột bổ sung loại WHERE condition
47 sẽ được thêm vào [các] cột kết quả của hàm. Cột này đánh số các hàng trong tập kết quả của hàm, bắt đầu từ 1. Theo mặc định, cột này được đặt tên là WHERE condition
48Một bí danh có thể được cung cấp theo cách tương tự như đối với một bảng. Nếu bí danh được viết, danh sách bí danh cột cũng có thể được viết để cung cấp tên thay thế cho một hoặc nhiều thuộc tính của kiểu trả về tổng hợp của hàm, bao gồm cả cột thứ tự nếu có
Nhiều lệnh gọi hàm có thể được kết hợp thành một mục mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 duy nhất bằng cách bao quanh chúng bằng WHERE condition
50. Đầu ra của một mục như vậy là sự nối của hàng đầu tiên từ mỗi chức năng, sau đó là hàng thứ hai từ mỗi chức năng, v.v. Nếu một số hàm tạo ra ít hàng hơn các hàm khác, giá trị null sẽ được thay thế cho dữ liệu bị thiếu, sao cho tổng số hàng được trả về luôn bằng với hàm tạo ra nhiều hàng nhấtNếu hàm đã được xác định là trả về kiểu dữ liệu
WHERE condition
51, thì phải có bí danh hoặc từ khóa WHERE condition
52, theo sau là danh sách định nghĩa cột ở dạng WHERE condition
53 WHERE condition
54 [,. ]]. Danh sách định nghĩa cột phải khớp với số thực và loại cột mà hàm trả vềKhi sử dụng cú pháp
WHERE condition
50, nếu một trong các hàm yêu cầu danh sách định nghĩa cột, bạn nên đặt danh sách định nghĩa cột sau lệnh gọi hàm bên trong WHERE condition
50. Danh sách định nghĩa cột chỉ có thể được đặt sau cấu trúc WHERE condition
50 nếu chỉ có một hàm duy nhất và không có mệnh đề WHERE condition
46Để sử dụng
WHERE condition
59 cùng với danh sách định nghĩa cột, bạn phải sử dụng cú pháp WHERE condition
50 và đặt danh sách định nghĩa cột bên trong WHERE condition
50WHERE condition
62Một trong
WHERE
63condition
WHERE
64condition
WHERE
65condition
WHERE
66condition
Đối với các loại liên kết
WHERE condition
67 và WHERE condition
68, phải chỉ định điều kiện liên kết, cụ thể là chính xác một trong số WHERE condition
69, WHERE condition
70 [,. ]], hoặc WHERE condition
71. Xem bên dưới để biết ý nghĩaMệnh đề
WHERE condition
72 kết hợp hai mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32, để thuận tiện, chúng tôi sẽ gọi là “bảng”, mặc dù trên thực tế, chúng có thể là bất kỳ loại mục nào của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32. Sử dụng dấu ngoặc đơn nếu cần thiết để xác định thứ tự lồng nhau. Trong trường hợp không có dấu ngoặc đơn, WHERE condition
72s lồng từ trái sang phải. Trong mọi trường hợp, WHERE condition
72 liên kết chặt chẽ hơn dấu phẩy ngăn cách các mục trong danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32. Tất cả các tùy chọn WHERE condition
72 chỉ là một sự thuận tiện về mặt công chứng, vì chúng không làm được gì mà bạn không thể làm với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38 đơn giảnWHERE condition
81 trả về tất cả các hàng trong tích Descartes đủ điều kiện [i. e. , tất cả các hàng kết hợp vượt qua điều kiện nối của nó], cộng với một bản sao của mỗi hàng trong bảng bên trái mà không có hàng bên phải vượt qua điều kiện nối. Hàng bên trái này được mở rộng đến toàn bộ chiều rộng của bảng đã tham gia bằng cách chèn các giá trị null cho các cột bên phải. Lưu ý rằng chỉ điều kiện riêng của mệnh đề WHERE condition
72 được xem xét khi quyết định hàng nào khớp. Điều kiện bên ngoài được áp dụng sau đóNgược lại,
WHERE condition
83 trả về tất cả các hàng đã tham gia, cộng với một hàng cho mỗi hàng bên phải chưa khớp [được mở rộng bằng các giá trị rỗng ở bên trái]. Đây chỉ là một sự thuận tiện về mặt ký hiệu, vì bạn có thể chuyển đổi nó thành WHERE condition
81 bằng cách chuyển đổi bảng bên trái và bên phảiWHERE condition
85 trả về tất cả các hàng đã tham gia, cộng với một hàng cho mỗi hàng bên trái chưa khớp [được mở rộng bằng giá trị rỗng ở bên phải], cộng với một hàng cho mỗi hàng bên phải chưa khớp [được mở rộng bằng giá trị rỗng ở bên trái]WHERE condition
69WHERE condition
87 là một biểu thức dẫn đến một giá trị thuộc loại GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11 [tương tự như mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38] chỉ định những hàng nào trong một liên kết được coi là khớpWHERE condition
90 [,. ] ] [ NHƯ WHERE condition
91 ]Một mệnh đề có dạng
WHERE condition
92 là viết tắt của WHERE condition
93. Ngoài ra, WHERE condition
94 ngụ ý rằng chỉ một trong mỗi cặp cột tương đương sẽ được đưa vào kết quả nối, không phải cả haiNếu tên
WHERE condition
91 được chỉ định, nó sẽ cung cấp bí danh bảng cho các cột tham gia. Chỉ các cột tham gia được liệt kê trong mệnh đề WHERE condition
94 mới có thể đánh địa chỉ bằng tên này. Không giống như một WHERE condition
04 thông thường, điều này không ẩn tên của các bảng đã tham gia khỏi phần còn lại của truy vấn. Ngoài ra, không giống như một WHERE condition
04 thông thường, bạn không thể viết một danh sách bí danh cột — tên đầu ra của các cột tham gia giống như chúng xuất hiện trong danh sách WHERE condition
94WHERE condition
71WHERE condition
71 là cách viết tắt của danh sách WHERE condition
94 đề cập đến tất cả các cột trong hai bảng có tên trùng nhau. Nếu không có tên cột chung, WHERE condition
71 tương đương với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
04GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
05GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
05 tương đương với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
07, nghĩa là không có hàng nào bị loại bỏ theo tiêu chuẩn. Chúng tạo ra một tích Descartes đơn giản, kết quả giống như bạn nhận được từ việc liệt kê hai bảng ở cấp cao nhất của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32, nhưng bị hạn chế bởi điều kiện nối [nếu có]GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09Từ khóa ________ 109 có thể đứng trước mục phụ ____ 11 ________ 632. Điều này cho phép ______ phụ_11 tham chiếu đến các cột của ____632 mục xuất hiện trước nó trong danh sách ____632. [Không có
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09, mỗi tiểu-___11 được đánh giá độc lập và do đó không thể tham khảo chéo bất kỳ mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 nào khác. ]GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 cũng có thể đứng trước một mục gọi hàm GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32, nhưng trong trường hợp này, đó là một từ nhiễu, bởi vì biểu thức hàm có thể tham chiếu đến các mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 trước đó trong mọi trường hợpMột mục
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 có thể xuất hiện ở cấp cao nhất trong danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 hoặc trong cây WHERE condition
72. Trong trường hợp sau, nó cũng có thể đề cập đến bất kỳ mục nào ở phía bên trái của WHERE condition
72 rằng nó nằm ở phía bên phải củaKhi một mục
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 chứa GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 tham chiếu chéo, việc đánh giá tiến hành như sau. đối với mỗi hàng của mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 cung cấp [các] cột được tham chiếu chéo hoặc tập hợp các hàng gồm nhiều mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 cung cấp các cột, mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09 được đánh giá bằng cách sử dụng các giá trị cột của hàng hoặc tập hợp hàng đó. [Các] hàng kết quả được nối như bình thường với các hàng mà chúng được tính toán từ. Điều này được lặp lại cho mỗi hàng hoặc tập hợp các hàng từ [các] bảng nguồn cột[Các] bảng nguồn cột phải là
WHERE condition
67 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32 được nối với mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09, nếu không sẽ không có một tập hợp các hàng được xác định rõ để từ đó tính toán từng tập hợp các hàng cho mục GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
09. Vì vậy, mặc dù một cấu trúc chẳng hạn như GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
35 RIGHT JOIN LATERAL GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
36 có giá trị về mặt cú pháp, nhưng thực tế nó không được phép để GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
36 tham chiếu đến GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38
grouping_element
[, ...]
Mệnh đề tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38 có dạng chungWHERE condition
trong đó
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
41 là bất kỳ biểu thức nào đánh giá kết quả của loại GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11. Bất kỳ hàng nào không thỏa mãn điều kiện này sẽ bị loại khỏi đầu ra. Một hàng thỏa mãn điều kiện nếu nó trả về true khi các giá trị hàng thực tế được thay thế cho bất kỳ tham chiếu biến nàoGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 Mệnh đề
grouping_element
[, ...]
Mệnh đề tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 có dạng tổng quátGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 sẽ cô đọng thành một hàng duy nhất, tất cả các hàng đã chọn có chung giá trị cho các biểu thức được nhóm. Một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
46 được sử dụng bên trong một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
47 có thể là tên cột đầu vào, hoặc tên hoặc số thứ tự của cột đầu ra [mục danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1] hoặc một biểu thức tùy ý được hình thành từ các giá trị cột đầu vào. Trong trường hợp không rõ ràng, tên GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 sẽ được hiểu là tên cột đầu vào chứ không phải tên cột đầu raNếu bất kỳ
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
50, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
51 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
52 nào xuất hiện dưới dạng các phần tử nhóm, thì toàn bộ mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 xác định một số lượng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
54 độc lập. Hiệu quả của điều này tương đương với việc xây dựng một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
19 giữa các truy vấn con với các tập hợp nhóm riêng lẻ làm mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 của chúng. Mệnh đề tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57 loại bỏ các bộ trùng lặp trước khi xử lý; . Để biết thêm chi tiết về cách xử lý các tập hợp nhóm, hãy xem Phần 7. 2. 4Các hàm tổng hợp, nếu có được sử dụng, được tính toán trên tất cả các hàng tạo thành từng nhóm, tạo ra một giá trị riêng cho từng nhóm. [Nếu có các hàm tổng hợp nhưng không có mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43, thì truy vấn được coi là có một nhóm duy nhất bao gồm tất cả các hàng đã chọn. ] Tập hợp các hàng được cung cấp cho từng hàm tổng hợp có thể được lọc thêm bằng cách đính kèm mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
61 vào lệnh gọi hàm tổng hợp; . 2. 7 để biết thêm thông tin. Khi có mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
61, chỉ những hàng khớp với mệnh đề đó mới được đưa vào đầu vào của hàm tổng hợp đóKhi có mặt
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 hoặc bất kỳ hàm tổng hợp nào có mặt, thì biểu thức danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 không hợp lệ để tham chiếu đến các cột chưa được nhóm ngoại trừ trong các hàm tổng hợp hoặc khi cột chưa được nhóm phụ thuộc chức năng vào các cột được nhóm, vì nếu không thì sẽ có nhiều hơn . Một phụ thuộc hàm tồn tại nếu các cột được nhóm [hoặc một tập hợp con của chúng] là khóa chính của bảng chứa cột chưa được nhómHãy nhớ rằng tất cả các hàm tổng hợp được đánh giá trước khi đánh giá bất kỳ biểu thức "vô hướng" nào trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 hoặc danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1. Điều này có nghĩa là, ví dụ, một biểu thức GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
67 không thể được sử dụng để bỏ qua việc đánh giá một hàm tổng hợp; . 2. 14Hiện tại, không thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71 với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65
grouping_element
[, ...]
Mệnh đề tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 có dạng tổng quátGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1trong đó
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
41 giống như được chỉ định cho mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 loại bỏ các hàng nhóm không thỏa mãn điều kiện. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 khác với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38 lọc các hàng riêng lẻ trước khi áp dụng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43, trong khi GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 lọc các hàng nhóm được tạo bởi GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43. Mỗi cột được tham chiếu trong GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
41 phải tham chiếu rõ ràng đến cột nhóm, trừ khi tham chiếu xuất hiện trong hàm tổng hợp hoặc cột chưa nhóm phụ thuộc chức năng vào cột nhómSự hiện diện của
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 biến truy vấn thành truy vấn được nhóm ngay cả khi không có mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43. Điều này giống như những gì xảy ra khi truy vấn chứa các hàm tổng hợp nhưng không có mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43. Tất cả các hàng đã chọn được coi là tạo thành một nhóm duy nhất và danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 và mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 chỉ có thể tham chiếu các cột của bảng từ bên trong các hàm tổng hợp. Một truy vấn như vậy sẽ tạo ra một hàng nếu điều kiện GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65 là đúng, không có hàng nào nếu điều kiện đó không đúngHiện tại, không thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71 với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96
grouping_element
[, ...]
Mệnh đề tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96 có dạng tổng quátGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
0trong đó
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
98 là tên có thể được tham chiếu từ mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
99 hoặc định nghĩa cửa sổ tiếp theo và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
100 làGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1Nếu một
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
101 được chỉ định thì nó phải tham chiếu đến một mục trước đó trong danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96; . Trong trường hợp này, cửa sổ mới không thể chỉ định mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
103 của chính nó và nó chỉ có thể chỉ định GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 nếu cửa sổ được sao chép không có mệnh đề. Cửa sổ mới luôn sử dụng mệnh đề khung riêng của nó; Các phần tử của danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
103 được hiểu theo cách tương tự như các phần tử của mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43, ngoại trừ việc chúng luôn là các biểu thức đơn giản và không bao giờ là tên hoặc số của cột đầu ra. Một điểm khác biệt nữa là các biểu thức này có thể chứa các lệnh gọi hàm tổng hợp, không được phép trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 thông thường. Chúng được phép ở đây vì cửa sổ xảy ra sau khi nhóm và tổng hợpTương tự, các phần tử của danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 được diễn giải theo cách giống như các phần tử của mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 ở mức câu lệnh, ngoại trừ việc các biểu thức luôn được coi là các biểu thức đơn giản và không bao giờ là tên hoặc số của cột đầu raGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
110 tùy chọn xác định khung cửa sổ cho các chức năng của cửa sổ phụ thuộc vào khung [không phải tất cả đều như vậy]. Khung cửa sổ là một tập hợp các hàng liên quan cho mỗi hàng của truy vấn [được gọi là hàng hiện tại]. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
110 có thể là một trongGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1trong đó
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
112 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
113 có thể là một trongGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
0và
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
114 có thể là một trongGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
3Nếu bỏ qua
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
113, giá trị mặc định là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
116. Các hạn chế là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
112 không thể là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
118, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
113 không thể là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
120 và lựa chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
113 không thể xuất hiện sớm hơn trong danh sách các tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
112 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
113 ở trên so với lựa chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
112 — ví dụ: GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
125 PRECEDING không được phépTùy chọn tạo khung mặc định là
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
126, giống như GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
127; . Nói chung, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
120 có nghĩa là khung bắt đầu với hàng đầu tiên của phân vùng và tương tự như vậy, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
118 có nghĩa là khung kết thúc với hàng cuối cùng của phân vùng, bất kể chế độ GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
132, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
133 hay GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
134. Ở chế độ GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
133, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
116 có nghĩa là khung bắt đầu hoặc kết thúc với hàng hiện tại; . Các tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
141 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
143 có ý nghĩa khác nhau tùy thuộc vào chế độ khung hình. Trong chế độ GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
133, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 là một số nguyên cho biết khung bắt đầu hoặc kết thúc nhiều hàng trước hoặc sau hàng hiện tại. Trong chế độ GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
134, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 là một số nguyên cho biết khung bắt đầu hoặc kết thúc có nhiều nhóm ngang hàng trước hoặc sau nhóm ngang hàng của hàng hiện tại, trong đó nhóm ngang hàng là một nhóm các hàng tương đương theo mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 của cửa sổ. Ở chế độ GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
132, việc sử dụng tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 yêu cầu phải có chính xác một cột GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 trong định nghĩa cửa sổ. Sau đó, khung chứa những hàng có giá trị cột sắp xếp không quá GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 nhỏ hơn [đối với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
141] hoặc nhiều hơn [đối với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
143] giá trị cột sắp xếp của hàng hiện tại. Trong những trường hợp này, kiểu dữ liệu của biểu thức GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 phụ thuộc vào kiểu dữ liệu của cột thứ tự. Đối với các cột sắp xếp theo số, nó thường cùng loại với cột sắp xếp, nhưng đối với các cột sắp xếp theo ngày giờ thì đó là một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
156. Trong tất cả các trường hợp này, giá trị của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 phải khác rỗng và không âm. Ngoài ra, mặc dù GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
140 không nhất thiết phải là một hằng số đơn giản, nhưng nó không thể chứa các biến, hàm tổng hợp hoặc hàm cửa sổTùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
114 cho phép loại trừ các hàng xung quanh hàng hiện tại khỏi khung, ngay cả khi chúng sẽ được đưa vào theo các tùy chọn bắt đầu khung và kết thúc khung. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
160 loại trừ hàng hiện tại khỏi khung. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
161 loại trừ hàng hiện tại và các hàng ngang theo thứ tự của nó khỏi khung. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
162 loại trừ bất kỳ hàng ngang hàng nào của hàng hiện tại khỏi khung, nhưng không phải chính hàng hiện tại. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
163 chỉ cần chỉ định rõ ràng hành vi mặc định là không loại trừ hàng hiện tại hoặc hàng ngang hàng của nóXin lưu ý rằng chế độ
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
133 có thể tạo ra kết quả không thể đoán trước nếu thứ tự GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 không sắp xếp các hàng một cách duy nhất. Các chế độ GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
132 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
134 được thiết kế để đảm bảo rằng các hàng ngang hàng trong thứ tự GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 được đối xử như nhau. tất cả các hàng của một nhóm ngang hàng nhất định sẽ nằm trong khung hoặc bị loại khỏi nóMục đích của mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96 là chỉ định hành vi của các chức năng cửa sổ xuất hiện trong danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 của truy vấn hoặc mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104. Các hàm này có thể tham chiếu các mục nhập mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96 theo tên trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
99 của chúng. Tuy nhiên, mục nhập mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96 không cần phải được tham chiếu ở bất kỳ đâu; . Có thể sử dụng các hàm cửa sổ mà không cần bất kỳ mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96 nào, vì lệnh gọi hàm cửa sổ có thể chỉ định trực tiếp định nghĩa cửa sổ của nó trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
99 của nó. Tuy nhiên, mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96 lưu cách nhập khi cần cùng một định nghĩa cửa sổ cho nhiều chức năng cửa sổHiện tại, không thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71 với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
96Các chức năng của cửa sổ được mô tả chi tiết trong Phần 3. 5, Phần 4. 2. 8 và Mục 7. 2. 5
Danh sách GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1
grouping_element
[, ...]
Danh sách
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 [giữa các từ khóa GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32] chỉ định các biểu thức tạo thành các hàng đầu ra của câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1. Các biểu thức có thể [và thường làm] đề cập đến các cột được tính trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
32Giống như trong một bảng, mọi cột đầu ra của
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 đều có tên. Trong một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 đơn giản, tên này chỉ được sử dụng để gắn nhãn cột để hiển thị, nhưng khi GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 là một truy vấn con của một truy vấn lớn hơn, tên này sẽ được truy vấn lớn hơn coi là tên cột của bảng ảo do truy vấn phụ tạo ra. . Để chỉ định tên sẽ sử dụng cho một cột đầu ra, hãy viết WHERE condition
52 GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
193 sau biểu thức của cột. [Bạn có thể bỏ qua WHERE condition
52 nhưng chỉ khi tên đầu ra mong muốn không khớp với bất kỳ từ khóa PostgreSQL nào [xem Phụ lục C]. Để bảo vệ chống lại các từ khóa bổ sung có thể có trong tương lai, bạn nên luôn viết WHERE condition
52 hoặc trích dẫn kép tên đầu ra. ] Nếu bạn không chỉ định tên cột, tên sẽ được PostgreSQL tự động chọn. Nếu biểu thức của cột là một tham chiếu cột đơn giản thì tên đã chọn giống với tên của cột đó. Trong các trường hợp phức tạp hơn, có thể sử dụng tên hàm hoặc tên loại hoặc hệ thống có thể sử dụng lại tên được tạo, chẳng hạn như GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
196Tên của cột đầu ra có thể được sử dụng để chỉ giá trị của cột trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43, nhưng không phải trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
38 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
65; Thay vì một biểu thức,
WHERE condition
03 có thể được viết trong danh sách đầu ra dưới dạng tốc ký cho tất cả các cột của các hàng đã chọn. Ngoài ra, bạn có thể viết GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
10 dưới dạng tốc ký cho các cột đến từ bảng đó. Trong những trường hợp này, không thể chỉ định tên mới với WHERE condition
52; Theo tiêu chuẩn SQL, các biểu thức trong danh sách đầu ra phải được tính toán trước khi áp dụng
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006. Điều này rõ ràng là cần thiết khi sử dụng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57, vì nếu không thì không rõ giá trị nào đang được phân biệt. Tuy nhiên, trong nhiều trường hợp sẽ thuận tiện nếu các biểu thức đầu ra được tính sau GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006; . Với hành vi đó, thứ tự đánh giá chức năng trực quan hơn và sẽ không có đánh giá tương ứng với các hàng không bao giờ xuất hiện trong đầu ra. PostgreSQL sẽ đánh giá hiệu quả các biểu thức đầu ra sau khi sắp xếp và giới hạn, miễn là các biểu thức đó không được tham chiếu trong GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43. [Là một phản ví dụ, rõ ràng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
013 phải đánh giá GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
014 trước khi sắp xếp. ] Các biểu thức đầu ra chứa hàm trả về tập hợp được đánh giá hiệu quả sau khi sắp xếp và trước khi giới hạn, do đó, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006 sẽ hành động để cắt đầu ra khỏi hàm trả về tập hợpGhi chú
Các phiên bản PostgreSQL trước 9. 6 không cung cấp bất kỳ đảm bảo nào về thời gian đánh giá các biểu thức đầu ra so với sắp xếp và giới hạn;
Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57
grouping_element
[, ...]
Nếu
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
017 được chỉ định, tất cả các hàng trùng lặp sẽ bị xóa khỏi tập kết quả [một hàng được giữ lại từ mỗi nhóm trùng lặp]. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
018 chỉ định ngược lại. tất cả các hàng được giữ nguyên; GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
11 chỉ giữ hàng đầu tiên của mỗi tập hợp các hàng mà các biểu thức đã cho đánh giá bằng nhau. Các biểu thức GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
020 được giải thích bằng cách sử dụng các quy tắc tương tự như đối với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 [xem ở trên]. Lưu ý rằng "hàng đầu tiên" của mỗi bộ là không thể đoán trước trừ khi sử dụng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 để đảm bảo rằng hàng mong muốn xuất hiện đầu tiên. Ví dụGROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
3lấy báo cáo thời tiết gần đây nhất cho từng địa điểm. Nhưng nếu chúng tôi không sử dụng
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 để buộc thứ tự giá trị thời gian giảm dần cho từng vị trí, thì chúng tôi đã nhận được báo cáo từ một thời điểm không thể đoán trước cho từng vị tríCác biểu thức ________ 3020] phải khớp với [các] biểu thức ________ 1104 ngoài cùng bên trái. Mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 thông thường sẽ chứa [các] biểu thức bổ sung xác định thứ tự ưu tiên mong muốn của các hàng trong mỗi nhóm GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
020Hiện tại, không thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71 với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17
grouping_element
[, ...]
Mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 có dạng tổng quát nàyWHERE condition
0GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
035 là bất kỳ câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 nào không có mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71. [GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006 có thể được gắn vào một biểu thức con nếu nó được đặt trong ngoặc đơn. Không có dấu ngoặc đơn, các mệnh đề này sẽ được áp dụng cho kết quả của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17, không phải cho biểu thức đầu vào bên phải của nó. ]Toán tử
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 tính tập hợp của các hàng được trả về bởi các câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 có liên quan. Một hàng nằm trong tập kết hợp của hai tập kết quả nếu nó xuất hiện trong ít nhất một trong các tập kết quả. Hai câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 đại diện cho toán hạng trực tiếp của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 phải tạo ra cùng một số cột và các cột tương ứng phải có kiểu dữ liệu tương thíchKết quả của
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 không chứa bất kỳ hàng trùng lặp nào trừ khi tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
051 được chỉ định. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
051 ngăn chặn việc loại bỏ các bản sao. [Do đó, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
19 thường nhanh hơn đáng kể so với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17; hãy sử dụng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
051 khi bạn có thể. ] GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57 có thể được viết để chỉ định rõ ràng hành vi mặc định loại bỏ các hàng trùng lặpNhiều toán tử
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 trong cùng một câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 được đánh giá từ trái sang phải, trừ khi có dấu ngoặc đơn chỉ định khácHiện tại, không thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71 cho kết quả GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17 hoặc cho bất kỳ đầu vào nào của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065
grouping_element
[, ...]
Mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065 có dạng chung nàyWHERE condition
1GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
035 là bất kỳ câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 nào không có mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71Toán tử
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065 tính giao điểm đã đặt của các hàng được trả về bởi các câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 có liên quan. Một hàng nằm trong giao điểm của hai tập hợp kết quả nếu nó xuất hiện trong cả hai tập hợp kết quảKết quả của
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065 không chứa bất kỳ hàng trùng lặp nào trừ khi tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
051 được chỉ định. Với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
051, một hàng có GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
080 trùng lặp ở bảng bên trái và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
081 trùng lặp ở bảng bên phải sẽ xuất hiện tối thiểu [GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
080,GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
081] lần trong tập hợp kết quả. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57 có thể được viết để chỉ định rõ ràng hành vi mặc định loại bỏ các hàng trùng lặpNhiều toán tử
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065 trong cùng một câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 được đánh giá từ trái sang phải, trừ khi dấu ngoặc đơn quy định khác. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065 liên kết chặt chẽ hơn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17. Tức là, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
089 sẽ được đọc là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
090Hiện tại, không thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71 cho kết quả GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065 hoặc cho bất kỳ đầu vào nào của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097
grouping_element
[, ...]
Mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097 có dạng chung nàyWHERE condition
2GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
035 là bất kỳ câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 nào không có mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71Toán tử
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097 tính toán tập hợp các hàng nằm trong kết quả của câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 bên trái nhưng không nằm trong kết quả của câu lệnh bên phảiKết quả của
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097 không chứa bất kỳ hàng trùng lặp nào trừ khi tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
051 được chỉ định. Với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
051, một hàng có GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
080 trùng lặp ở bảng bên trái và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
081 trùng lặp ở bảng bên phải sẽ xuất hiện tối đa [GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
080-GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
081,0] lần trong tập kết quả. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
57 có thể được viết để chỉ định rõ ràng hành vi mặc định loại bỏ các hàng trùng lặpNhiều toán tử
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097 trong cùng một câu lệnh GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 được đánh giá từ trái sang phải, trừ khi dấu ngoặc đơn quy định khác. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097 liên kết ở cùng cấp độ với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17Hiện tại, không thể chỉ định
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
68, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
69, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
70 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
71 cho kết quả GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097 hoặc cho bất kỳ đầu vào nào của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104
grouping_element
[, ...]
Mệnh đề tùy chọn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 có dạng chung nàyWHERE condition
3Mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 làm cho các hàng kết quả được sắp xếp theo [các] biểu thức đã chỉ định. Nếu hai hàng bằng nhau theo biểu thức ngoài cùng bên trái, chúng được so sánh theo biểu thức tiếp theo, v.v. Nếu chúng bằng nhau theo tất cả các biểu thức đã chỉ định, thì chúng được trả về theo thứ tự phụ thuộc vào việc triển khaiMỗi
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
46 có thể là tên hoặc số thứ tự của một cột đầu ra [GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1 mục danh sách] hoặc nó có thể là một biểu thức tùy ý được hình thành từ các giá trị của cột đầu vàoSố thứ tự đề cập đến vị trí thứ tự [từ trái sang phải] của cột đầu ra. Tính năng này cho phép xác định thứ tự trên cơ sở cột không có tên duy nhất. Điều này không bao giờ thực sự cần thiết vì luôn có thể gán tên cho cột đầu ra bằng cách sử dụng mệnh đề
WHERE condition
52Cũng có thể sử dụng các biểu thức tùy ý trong mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104, kể cả các cột không xuất hiện trong danh sách đầu ra của GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
1. Vì vậy, tuyên bố sau đây là hợp lệWHERE condition
4Hạn chế của tính năng này là mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 áp dụng cho kết quả của mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097 chỉ có thể chỉ định tên hoặc số cột đầu ra, không phải biểu thứcNếu một biểu thức
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 là một tên đơn giản khớp với cả tên cột đầu ra và tên cột đầu vào, thì GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 sẽ hiểu nó là tên cột đầu ra. Điều này trái ngược với lựa chọn mà GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
43 sẽ đưa ra trong tình huống tương tự. Sự không nhất quán này được tạo ra để tương thích với tiêu chuẩn SQLTheo tùy chọn, người ta có thể thêm từ khóa
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
142 [tăng dần] hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
143 [giảm dần] sau bất kỳ biểu thức nào trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104. Nếu không được chỉ định, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
142 được giả định theo mặc định. Ngoài ra, một tên toán tử đặt hàng cụ thể có thể được chỉ định trong mệnh đề WHERE condition
94. Toán tử sắp xếp phải là thành viên nhỏ hơn hoặc lớn hơn của một số họ toán tử B-tree. GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
142 thường tương đương với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
148 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
143 thường tương đương với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
150. [Nhưng người tạo kiểu dữ liệu do người dùng xác định có thể xác định chính xác thứ tự sắp xếp mặc định là gì và nó có thể tương ứng với các toán tử có tên khác. ]Nếu
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
151 được chỉ định, các giá trị null sẽ sắp xếp sau tất cả các giá trị khác null; . Nếu không được chỉ định, hành vi mặc định là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
151 khi GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
142 được chỉ định hoặc ngụ ý và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
152 khi GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
143 được chỉ định [do đó, mặc định là hành động như thể số null lớn hơn số không null]. Khi WHERE condition
94 được chỉ định, thứ tự null mặc định phụ thuộc vào việc toán tử là toán tử nhỏ hơn hay lớn hơnLưu ý rằng các tùy chọn sắp xếp chỉ áp dụng cho biểu thức mà chúng tuân theo;
Dữ liệu chuỗi ký tự được sắp xếp theo đối chiếu áp dụng cho cột được sắp xếp. Điều đó có thể được ghi đè khi cần bằng cách bao gồm một mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
160 trong GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
46, ví dụ như GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
162. Để biết thêm thông tin, hãy xem Phần 4. 2. 10 và Mục 24. 2Điều khoản GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006
grouping_element
[, ...]
Mệnh đề
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006 bao gồm hai mệnh đề phụ độc lậpWHERE condition
5Tham số
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
165 chỉ định số lượng hàng tối đa cần trả về, trong khi đó, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
166 chỉ định số lượng hàng cần bỏ qua trước khi bắt đầu trả về hàng. Khi cả hai được chỉ định, các hàng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
166 sẽ bị bỏ qua trước khi bắt đầu đếm các hàng GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
165 sẽ được trả vềNếu biểu thức
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
165 đánh giá bằng NULL, thì nó được coi là GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
170, i. e. , không giới hạn. Nếu GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
166 đánh giá là NULL, thì nó được xử lý giống như GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
172SQL. 2008 đã giới thiệu một cú pháp khác để đạt được kết quả tương tự, mà PostgreSQL cũng hỗ trợ. Nó là
WHERE condition
6Trong cú pháp này, giá trị
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
166 hoặc GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
165 được yêu cầu theo tiêu chuẩn là một hằng số, một tham số hoặc một tên biến; . Nếu GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
165 bị bỏ qua trong mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
176, nó sẽ mặc định là 1. Tùy chọn GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
177 được sử dụng để trả về bất kỳ hàng bổ sung nào có vị trí cuối cùng trong tập kết quả theo mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104; . GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
181 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
133 cũng như GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
183 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
184 là những từ nhiễu không ảnh hưởng đến tác dụng của những mệnh đề này. Theo tiêu chuẩn, mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
185 phải đứng trước mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
176 nếu cả hai đều có mặt; Khi sử dụng
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006, bạn nên sử dụng mệnh đề GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 ràng buộc các hàng kết quả theo một thứ tự duy nhất. Nếu không, bạn sẽ nhận được một tập hợp con không thể đoán trước của các hàng của truy vấn — bạn có thể yêu cầu các hàng từ thứ mười đến thứ hai mươi, nhưng từ thứ mười đến thứ hai mươi theo thứ tự nào? Công cụ lập kế hoạch truy vấn sẽ tính đến
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006 khi tạo kế hoạch truy vấn, do đó, rất có thể bạn sẽ nhận được các kế hoạch khác nhau [tạo ra các thứ tự hàng khác nhau] tùy thuộc vào những gì bạn sử dụng cho GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
185. Do đó, việc sử dụng các giá trị GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006/GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
185 khác nhau để chọn các tập hợp con khác nhau của kết quả truy vấn sẽ cho kết quả không nhất quán trừ khi bạn thực thi một thứ tự kết quả có thể dự đoán được với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104. Đây không phải là một lỗi; Thậm chí có thể thực hiện lặp đi lặp lại cùng một truy vấn
GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006 để trả về các tập hợp con khác nhau của các hàng trong bảng, nếu không có một GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104 để thực thi lựa chọn tập hợp con xác định. Một lần nữa, đây không phải là lỗi; GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
2 Lệnh
grouping_element
[, ...]
Lệnh
WHERE condition
7tương đương với
WHERE condition
8Nó có thể được sử dụng như một lệnh cấp cao nhất hoặc như một biến thể cú pháp tiết kiệm không gian trong các phần của truy vấn phức tạp. Chỉ có thể sử dụng các mệnh đề khóa
WHERE condition
9, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
17, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
065, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
097, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
104, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
006, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
185, GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
176 và GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
108 với GROUP BY [ ALL | DISTINCT ] grouping_element
[, ...]
2;