Tham chiếu ngôn ngữ truy vấn (Phiên bản 0.7)

Ngôn ngữ truy vấn API hình ảnh của Google cho phép bạn thực hiện nhiều thao tác dữ liệu với truy vấn về nguồn dữ liệu.

Mục lục

Giới thiệu

Thông thường, hình ảnh trực quan hoá sẽ yêu cầu dữ liệu ở một dạng nhất định. Ví dụ: biểu đồ hình tròn có thể mong đợi dữ liệu dưới dạng hai cột: nhãn văn bản và giá trị số. Dữ liệu trong nguồn dữ liệu có thể không khớp chính xác với cấu trúc này. Ví dụ: nguồn dữ liệu có thể có nhiều hơn hai cột hoặc thứ tự của các cột có thể không khớp với thứ tự mong đợi trong biểu đồ hình tròn.

Ngôn ngữ truy vấn cung cấp khả năng gửi các yêu cầu thao tác và định dạng dữ liệu đến nguồn dữ liệu, đồng thời đảm bảo rằng cấu trúc dữ liệu và nội dung được trả về khớp với cấu trúc dự kiến.

Cú pháp của ngôn ngữ truy vấn tương tự như SQL. Các nhà phát triển quen thuộc với SQL có thể nhanh chóng học và sử dụng ngôn ngữ truy vấn này. Có nhiều hướng dẫn về SQL trên web. Có một số điểm khác biệt giữa ngôn ngữ truy vấn này và SQL được mô tả trong mục cú pháp.

Xin lưu ý rằng các nguồn dữ liệu không bắt buộc phải triển khai ngôn ngữ truy vấn hoặc nếu có, để triển khai tất cả tính năng của ngôn ngữ đó. Trừ khi có lý do để tin tưởng khác, bạn không nên dựa vào một nguồn dữ liệu để triển khai tất cả các tính năng của ngôn ngữ này.

Sử dụng ngôn ngữ truy vấn

Bạn có thể đính kèm một chuỗi truy vấn vào một yêu cầu nguồn dữ liệu theo 2 cách: đặt chuỗi truy vấn từ trong mã JavaScript hoặc đặt chuỗi truy vấn làm tham số trong URL nguồn dữ liệu. Nếu yêu cầu của bạn không bao gồm một chuỗi truy vấn, hành vi mặc định của một nguồn dữ liệu sẽ trả về tất cả các hàng và cột bằng cách sử dụng thứ tự hàng/cột và định dạng mặc định của hàng đó. Bạn có thể thay đổi điều đó bằng cách đưa chuỗi truy vấn vào yêu cầu vào một nguồn dữ liệu.

Đặt truy vấn từ JavaScript

Để đặt chuỗi truy vấn từ trong mã JavaScript, hãy gọi phương thức setQuery của lớp google.visualization.Query.

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

Đặt truy vấn trong URL nguồn dữ liệu

Bạn có thể thêm chuỗi truy vấn vào URL nguồn dữ liệu bằng cách dùng tham số tq. Việc đặt truy vấn trong tham số URL thay vì trong JavaScript cho phép bạn dễ dàng sử dụng hình ảnh do các nhà phát triển khác viết mà vẫn có thể tùy chỉnh truy vấn.

Chuỗi truy vấn phải được mã hoá chính xác dưới dạng tham số URL. Bạn có thể mã hoá một URL bằng cách sử dụng hàm JavaScript encodeURIComponent hoặc bạn có thể mã hoá URL đó theo cách thủ công bằng cách sử dụng công cụ mã hoá ở cuối phần này.

Ví dụ:

Hãy xem xét chuỗi truy vấn sau cho bảng tính Google. (Xin lưu ý rằng mã nhận dạng cột trong bảng tính luôn là chữ cái; văn bản tiêu đề cột xuất hiện trong bảng tính đã xuất bản là nhãn chứ không phải mã nhận dạng. Bạn phải sử dụng mã nhận dạng (không phải nhãn), trong chuỗi truy vấn.)

select A, sum(B) group by A

Khi mã hoá, truy vấn này sẽ trở thành:

select%20A%2C%20sum(B)%20group%20by%20A

Giả sử đây là URL của bảng tính:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

Thêm /gviz/tq?tq=YOUR_QUERY_STRING vào URL bảng tính để nhận chuỗi truy vấn cuối cùng của bạn:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

Hãy sử dụng công cụ dưới đây để mã hoá hoặc giải mã một chuỗi truy vấn:

Lưu ý: Để truy cập vào dữ liệu bảng tính riêng tư, bạn phải chuyển thông tin xác thực ủy quyền rõ ràng bằng OAuth. Xem mục Bảng tính Google: Uỷ quyền để biết thêm chi tiết.

Cú pháp ngôn ngữ

Tổng quan

Cú pháp Ngôn ngữ truy vấn API hình ảnh của Google được thiết kế tương tự như cú pháp SQL. Tuy nhiên, đó là một tập hợp con của SQL, với một vài tính năng riêng mà bạn cần tìm hiểu. Nếu bạn đã quen thuộc với SQL, bạn không nên quá khó học.

Bảng dữ liệu

Tài liệu này sử dụng thuật ngữ bảng dữ liệu để tham chiếu đến tập hợp kết quả của một truy vấn. Bảng dữ liệu bao gồm các hàng và cột. Mỗi cột trong bảng dữ liệu có các thuộc tính sau:

  • Mã nhận dạng (hoặc mã cột). Dùng để tham chiếu các cột trong truy vấn. Xin lưu ý rằng bạn không bao giờ được phép tham chiếu đến một cột theo nhãn trong một truy vấn mà chỉ dựa trên giá trị nhận dạng. Mẹo: Hãy cố gắng không sử dụng mã nhận dạng có chứa dấu cách; các dấu cách rất khó quản lý và có thể khiến bạn mắc lỗi nhỏ nhưng khó tìm thấy trong quá trình lập trình. Ngoài ra, mã nhận dạng có dấu cách phải được đặt trong dấu ngoặc kép.
  • Nhãn. string thường hiển thị cho người dùng cuối. Ví dụ: chú giải trong biểu đồ hình tròn hoặc tiêu đề cột trong bảng.
  • Loại dữ liệu. Các loại dữ liệu được hỗ trợ là string, number, boolean, date, datetimetimeofday. Tất cả giá trị của một cột sẽ có một loại dữ liệu khớp với loại cột hoặc có giá trị null. Các loại này tương tự nhưng không giống với các loại JavaScript. như được mô tả trong phần Văn bản trên trang này.
  • Mẫu định dạng. Nguồn dữ liệu có thể xác định các mẫu định dạng cho một số hoặc tất cả các cột của nguồn dữ liệu đó. Bạn có thể ghi đè mẫu này bằng cách đưa vào một mệnh đề định dạng.

Bảng được sử dụng trong tất cả các ví dụ:

Trong phần này, tất cả ví dụ về các cụm từ tìm kiếm đều tham khảo bảng sau. Tiêu đề cột là giá trị nhận dạng cột.

tên
string
phòng ban
string
bữa trưa
timeofday
lương
number
thuêDate
date
tuổi
number
là người cao tuổi
boolean
thời gian bắt đầu thâm niên
datetime
JohnEng12:00:00
1000
2005-03-1935đúng2007-12-02 15:56:00
DaveEng12:00:00
500
2006-04-1927sainull
KênhEng13:00:00
600
2005-10-1030sainull
Xe BenBán hàng12:00:00
400
2002-10-1032đúng2005-03-09 12:30:00
Xe buýt đưa đón cỡ nhỏBán hàng12:00:00
350
2004-09-0825sainull
MikeTiếp thị13:00:00
800
2005-01-1024đúng3/12/2007 14:40:00

Các điều khoản ngôn ngữ

Cú pháp của ngôn ngữ truy vấn bao gồm các mệnh đề sau. Mỗi mệnh đề bắt đầu bằng một hoặc hai từ khoá. Tất cả các mệnh đề là không bắt buộc. Các mệnh đề được phân tách bằng dấu cách. Thứ tự của các mệnh đề phải như sau:

Mệnh đề Mức sử dụng
select Chọn những cột cần trả về và thứ tự trả về. Nếu bạn bỏ qua, tất cả các cột của bảng sẽ được trả về theo thứ tự mặc định.
where Chỉ trả về hàng khớp với điều kiện. Nếu bỏ qua, tất cả các hàng sẽ được trả về.
group by Tổng hợp giá trị trên các hàng.
pivot Chuyển các giá trị riêng biệt trong cột thành các cột mới.
order by Sắp xếp hàng theo giá trị trong cột.
limit Giới hạn số lượng hàng được trả về.
offset Bỏ qua một số hàng đầu tiên.
label Đặt nhãn cột.
format Định dạng giá trị trong một số cột nhất định bằng cách sử dụng các mẫu định dạng nhất định.
options Đặt các tuỳ chọn khác.
from Mệnh đề from đã bị loại bỏ khỏi ngôn ngữ.

 

Chọn

Mệnh đề select được dùng để chỉ định các cột cần trả về và thứ tự của chúng. Nếu mệnh đề này không được chỉ định hoặc nếu sử dụng select *, thì tất cả các cột của bảng nguồn dữ liệu sẽ được trả về theo thứ tự ban đầu. Các cột được tham chiếu bằng giá trị nhận dạng (không phải theo nhãn). Ví dụ: trong Bảng tính Google, giá trị nhận dạng cột là một hoặc hai chữ cái của cột ký tự (A, B, C, ...).

Các mục trong mệnh đề select có thể là giá trị nhận dạng cột hoặc dữ liệu đầu ra của hàm tổng hợp, hàm vô hướng hoặc toán tử.

Ví dụ:

select *
select dept, salary
select max(salary)

Trong ví dụ sau, dấu ngoặc kép được dùng để tham chiếu đến mã nhận dạng cột có chứa dấu cách (địa chỉ email) hoặc là các từ dành riêng (ngày):

select `email address`, name, `date`

Chạy truy vấn sau trên bảng ví dụ:

select lunchTime, name

Trả về phản hồi sau:

Bữa trưa name
12:00:00John
12:00:00Dave
13:00:00Kênh
12:00:00Xe Ben
12:00:00Xe buýt đưa đón cỡ nhỏ
13:00:00Mike

Địa điểm

Mệnh đề where được dùng để chỉ trả về những hàng khớp với một điều kiện cụ thể.

Các toán tử so sánh đơn giản là <=, <, >, >=, =, !=, <>. Cả hai toán tử so sánh != <> đều có nghĩa không bằng nhau. Các chuỗi được so sánh bằng giá trị từ vựng. Hãy lưu ý rằng sự cân bằng được biểu thị bằng =, chứ không phải == như trong hầu hết ngôn ngữ của máy tính. Việc so sánh với null được thực hiện bằng cách sử dụng is null hoặc is not null.

Bạn có thể kết hợp nhiều điều kiện bằng cách sử dụng toán tử logic and, or, và not. Bạn có thể sử dụng dấu ngoặc đơn để xác định mức độ ưu tiên rõ ràng.

Mệnh đề Where cũng hỗ trợ một số toán tử so sánh chuỗi phức tạp hơn. Những toán tử này nhận hai chuỗi làm đối số; mọi đối số không phải chuỗi (ví dụ: ngày hoặc số) sẽ được chuyển đổi thành chuỗi trước khi so sánh. Chuỗi khớp với phân biệt chữ hoa chữ thường (bạn có thể sử dụng các hàm vô hướng upper() hoặc lower() để xử lý trường hợp đó).

  • contains – Khớp một chuỗi con. toàn bộ contains một phần là đúng nếu phần nằm ở bất kỳ đâu trong toàn bộ. Ví dụ: where name contains 'John' khớp với "John", "John Adams", "Long John Silver" nhưng không khớp với "John adams".
  • starts with – Một tiền tố khớp. giá trị starts with tiền tố là true nếu tiền tố nằm ở đầu giá trị. Ví dụ: where dept starts with 'engineering' khớp với "kỹ thuật" và "người quản lý kỹ thuật". where dept starts with 'e' khớp với "kỹ thuật", "eng" và "e".
  • ends with – Khớp một hậu tố. giá trị ends with hậu tố là đúng nếu hậu tố nằm ở cuối giá trị. Ví dụ: where role ends with 'y' khớp với "cowboy", "boy" và "y".
  • matches – Khớp biểu thức chính quy (preg). haystack matches needle là true nếu biểu thức chính quy trong needle khớp với haystack. Ví dụ: where country matches '.*ia' khớp với Ấn Độ và Nigeria, nhưng không khớp với Indiana. Lưu ý rằng đây không phải là tìm kiếm toàn cầu, do đó where country matches 'an' sẽ không khớp với 'Canada'.
  • like – Tìm kiếm văn bản hỗ trợ hai ký tự đại diện: %, khớp với 0 hoặc nhiều ký tự bất kỳ thuộc loại nào và _ (dấu gạch dưới), khớp với mọi ký tự bất kỳ. Điều này cũng tương tự như toán tử SQL NGẮN. Ví dụ: where name like fre% khớp với "fre", "fred" và "freddy".

Ví dụ:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

Chạy truy vấn sau trên bảng ví dụ:

select name where salary > 700

Trả về phản hồi sau:

name
John
Mike

Nhóm theo

Mệnh đề group by được dùng để tổng hợp các giá trị trên các hàng. Một hàng duy nhất được tạo cho mỗi tổ hợp giá trị riêng biệt trong mệnh đề theo nhóm. Dữ liệu được tự động sắp xếp theo các cột nhóm, trừ khi có quy định khác theo mệnh đề order by.

Lưu ý: Nếu sử dụng mệnh đề group by, thì mọi cột phải được liệt kê trong mệnh đề select phải được liệt kê trong mệnh đề group by hoặc được gói bởi một group byhàm tổng hợp.

Ví dụ:

select dept, max(salary) group by dept

Chạy truy vấn sau trên bảng ví dụ:

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

Trả về phản hồi sau:

Bữa trưa tiền lương trung bình số lượng tuổi
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Tổng hợp

Mệnh đề pivot được dùng để chuyển đổi các giá trị riêng biệt trong cột thành cột mới. Ví dụ: một bảng tổng hợp theo cột "năm" sẽ tạo ra một bảng có một cột cho mỗi năm riêng biệt xuất hiện trong bảng gốc. Chẳng hạn, điều này có thể hữu ích nếu một hình ảnh biểu đồ dạng đường vẽ mỗi cột dưới dạng một dòng riêng biệt. Nếu bạn muốn vẽ một dòng riêng cho từng năm và "năm" là một trong các cột của bảng gốc, thì bạn nên sử dụng một thao tác bảng tổng hợp để chuyển đổi dữ liệu cần thiết.

Lưu ý: Nếu bạn sử dụng mệnh đề pivot, thì mọi cột được liệt kê trong mệnh đề select phải được liệt kê trong mệnh đề group by hoặc được đặt trong một hàm tổng hợp

Vì nhiều hàng có thể chứa cùng một giá trị cho các cột tổng hợp, nên hàm ý này sẽ ngụ ý việc tổng hợp. Xin lưu ý rằng khi sử dụng pivot mà không sử dụng group by, bảng kết quả sẽ chứa đúng một hàng. Ví dụ: chạy truy vấn sau trên bảng ví dụ:

select sum(salary) pivot dept

Trả về phản hồi sau:

Tổng lương Tổng lương tiếp thị Tổng doanh số bán hàng
2100 800 750

Lý do là 2100 là tổng lương cho bộ phận Eng, 800 cho bộ phận Tiếp thị, v.v.

Việc sử dụng pivot cùng với group by có thể hữu ích hơn nữa, vì việc này tạo ra một bảng, trong đó mỗi ô chứa kết quả tổng hợp cho hàng có liên quan và cột thích hợp. Ví dụ: chạy truy vấn sau trên bảng ví dụ:

select dept, sum(salary)
  group by dept
  pivot lunchTime

Trả về phản hồi sau:

phòng ban 12:00:00 lương 13:00:00 lương
Eng 1500 600
Tiếp thị null 800
Bán hàng 750 null

Bạn cũng có thể "đảo ngược" bảng này, chuyển đổi các cột và hàng bằng cách chuyển đổi giữa cột pivot và cột group by. Chạy truy vấn sau trên bảng ví dụ:

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

Trả về phản hồi sau:

Bữa trưa Tổng lương Tổng lương tiếp thị Tổng doanh số bán hàng
12:00:00 1500 null 750
13:00:00 600 800 null

Bạn cũng có thể sử dụng nhiều cột trong mệnh đề pivot. Trong trường hợp này, các cột của bảng phản hồi bao gồm tất cả các tổ hợp giá trị riêng biệt trong các cột tồn tại trong bảng gốc. Ví dụ: chạy truy vấn sau trên bảng ví dụ:

select sum(salary)
  pivot dept, lunchTime

Trả về phản hồi sau:

Anh,12:00:00 lương Anh,13:00:00 lương Tiếp thị,13:00:00 lương Bán hàng,12:00:00 lương
1500 600 800 750

Xin lưu ý rằng chỉ những tổ hợp xuất hiện trong bảng gốc mới được cung cấp các cột trong bảng phản hồi. Đây là lý do vì sao không có cột cho bộ phận Tiếp thị, 12:00:00 hoặc 13:00:00.

Bạn cũng có thể sử dụng nhiều loại tổng hợp. Ví dụ: chạy truy vấn sau trên bảng ví dụ:

select sum(salary), max(lunchTime)
  pivot dept

Trả về phản hồi sau:

Tổng lương Tổng lương tiếp thị Tổng doanh số bán hàng Thời gian tối đa của tiếng Anh Thời gian ăn trưa tối đa của tiếp thị Bán hàng vào thời gian tối đa
2100 800 750 13:00:00 13:00:00 12:00:00

Bạn có thể kết hợp nhiều tổng hợp trong mệnh đề select, nhiều cột trong mệnh đề group by và nhiều cột trong mệnh đề pivot. Trong nội bộ, quá trình tổng hợp được thực hiện bằng cách nối các cột trong nhóm với các mệnh đề tổng hợp.

Các cột được chỉ định trong mệnh đề pivot có thể không xuất hiện trong mệnh đề select, group by hoặc order by. Khi sử dụng pivot, mệnh đề order by không được chứa bất kỳ cột tổng hợp nào. Lý do là vì mỗi tổng hợp được chỉ định trong mệnh đề select, nhiều cột được tạo trong bảng kết quả. Tuy nhiên, bạn có thể định dạng các cột tổng hợp khi sử dụng pivot. Kết quả của một định dạng như vậy là tất cả các cột mới liên quan đến dữ liệu tổng hợp cụ thể (do thao tác tổng hợp tạo ra) đều được định dạng theo mẫu đã chỉ định. Trong ví dụ trên, việc thêm format sum(salary) "some_format_string" sẽ ảnh hưởng đến các cột sau: Tổng tiền lương của Google, tiền lương tổng của lương và Bán hàng tổng lương.

Bạn có thể gắn nhãn các cột tổng hợp. Nếu không có nhãn nào được chỉ định trong mệnh đề label, thì nhãn của một cột được tạo ra sẽ do chuyển hướng bao gồm danh sách các giá trị trong cột tổng hợp, loại tổng hợp (tối thiểu, tối đa, tổng, ...) và nhãn của cột tổng hợp. Ví dụ: "Eng,12:00:00 sum salary". Nếu chỉ có một giá trị tổng hợp được chỉ định trong mệnh đề select, thì phần tổng hợp sẽ bị xoá khỏi nhãn và chỉ danh sách giá trị trong các cột tổng hợp được giữ lại. Ví dụ: "Eng,12:00:00". Khi mệnh đề label chỉ định một nhãn cho cột tổng hợp, thì nhãn đã yêu cầu sẽ được thêm vào danh sách các giá trị, cả khi chỉ có một tổng hợp trong mệnh đề select và khi có nhiều hơn một. Ví dụ: label sum(salary) "sumsal" sẽ dẫn đến các nhãn cột "Eng,12:00:00 sumsal", "Eng,13:00:00 sumsal", v.v.

Đặt hàng theo

Mệnh đề order by được dùng để sắp xếp hàng theo giá trị trong các cột đã chỉ định.

Các mục trong mệnh đề order by có thể là giá trị nhận dạng cột hoặc dữ liệu đầu ra của hàm tổng hợp, hàm vô hướng hoặc toán tử.

Ví dụ:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

Giới hạn

Mệnh đề limit được dùng để giới hạn số lượng hàng được trả về.

Ví dụ:

limit 100

Chênh lệch

Mệnh đề offset được dùng để bỏ qua một số hàng đầu tiên. Nếu sử dụng mệnh đề limit, offset sẽ được áp dụng đầu tiên: ví dụ: limit 15 offset 30 sẽ trả về hàng từ 31 đến 45.

Ví dụ:

offset 10
limit 30 offset 210

Nhãn

Mệnh đề label được dùng để đặt nhãn cho một hoặc nhiều cột. Xin lưu ý rằng bạn không thể sử dụng giá trị của nhãn thay cho mã truy vấn.

Các mục trong mệnh đề label có thể là giá trị nhận dạng cột hoặc dữ liệu đầu ra của hàm tổng hợp, hàm vô hướng hoặc toán tử.

Cú pháp:

label column_id label_string [,column_id label_string]
column_id
Giá trị nhận dạng của cột đang được gán nhãn.
label_string
Nhãn để gán cho cột đó. Nhiều hình ảnh trực quan sử dụng nhãn cột làm văn bản để hiển thị cho người dùng cuối, chẳng hạn như nhãn chú giải trong biểu đồ hình tròn. Nhãn là chuỗi ký tự và tuân theo các quy tắc cú pháp đó.

Ví dụ:

Ví dụ sau đây sẽ đặt nhãn cho cột phòng ban thành "Phòng ban", nhãn cho cột tên "Tên nhân viên" và nhãn cho cột vị trí thành "Vị trí nhân viên":

label dept 'Department', name "Employee Name", location 'Employee Location'

Định dạng

Mệnh đề format được dùng để chỉ định một giá trị được định dạng cho các ô trong một hoặc nhiều cột. Dữ liệu được trả về phải bao gồm cả giá trị thực tế và giá trị được định dạng cho mỗi ô trong một cột được định dạng. Nhiều hình ảnh trực quan sử dụng giá trị chưa được định dạng để tính toán, nhưng giá trị được định dạng để hiển thị. Các mẫu mà bạn chỉ định trong mệnh đề này thường được trả về trong thuộc tính pattern (mẫu) của các cột tương ứng.

Cú pháp mẫu:

number, date, timeofday, datetime
Các mẫu ngàysố được xác định theo ICU.
boolean
Mẫu là một string ở định dạng "value-if-true:value-if-false".

Ví dụ:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

Tùy chọn

Mệnh đề options được dùng để kiểm soát các tuỳ chọn bổ sung để thực thi truy vấn. Những từ khoá có thể sử dụng theo mệnh đề options là:

  • no_format Xoá các giá trị đã định dạng khỏi kết quả và chỉ để lại các giá trị cơ bản. Có thể dùng khi hình ảnh cụ thể không sử dụng các giá trị được định dạng để giảm kích thước của phản hồi.
  • no_values Xoá các giá trị cơ bản khỏi kết quả và chỉ để lại các giá trị được định dạng. Có thể sử dụng khi hình ảnh cụ thể chỉ sử dụng các giá trị được định dạng để giảm kích thước của phản hồi.

Chức năng thao tác dữ liệu

Có một số loại toán tử và hàm cho phép bạn thao tác hoặc tổng hợp dữ liệu trong một cột duy nhất hoặc so sánh hoặc kết hợp dữ liệu trên nhiều cột. Ví dụ: bao gồm sum() (để thêm tất cả các giá trị trong một cột), tối đa (để tìm giá trị lớn nhất trong một cột) và + (để thêm các giá trị của hai cột vào cùng một hàng).

Một số hàm có thể xuất hiện trong bất kỳ mệnh đề nào, một số hàm có thể xuất hiện trong một tập hợp con của các mệnh đề. Tài liệu này được cung cấp dưới đây.

Ví dụ:

Dựa vào bảng này... Nếu chúng ta áp dụng truy vấn này... Chúng tôi thu được kết quả này.
Tên Salary (Tiền lương) Thuế Ngày bắt đầu
Chữ Sharon 1000 100 1/1/2009
Avital 2000 200 21/1/2008
Bánh Moran 3000 300 12/2/2008
select upper(name), year(startDate)
Tên năm(Ngày bắt đầu)
BIỂU TƯỢNG 2008
BẮC 2008
SHARON 2009

 

Các hàm thao tác dữ liệu sau đây được xác định bằng ngôn ngữ truy vấn API Hình ảnh trực quan của Google:

 

Hàm tổng hợp

Các hàm tổng hợp được chuyển một cột giá trị nhận dạng và thực hiện thao tác trên tất cả các giá trị trong mỗi nhóm (nhóm được chỉ định bằng mệnh đề group by hoặc pivot hoặc tất cả các hàng nếu không được sử dụng các mệnh đề đó).

Ví dụ:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

Bạn có thể dùng các hàm tổng hợp trong mệnh đề select, order by, label, format. Chúng không thể xuất hiện trong mệnh đề where, group by, pivot, limit, offset hoặc options.

Dưới đây là các hàm tổng hợp được hỗ trợ:

Tên Mô tả Các loại cột được hỗ trợ Loại dữ liệu trả về
avg() Trả về giá trị trung bình của tất cả các giá trị trong cột cho một nhóm. number number
count() Trả về số lượng phần tử trong cột được chỉ định cho một nhóm. Các ô rỗng không được tính. Mọi loại number
max() Trả về giá trị tối đa trong cột cho một nhóm. Ngày so sánh với ngày trước đó nhỏ hơn, string được so sánh theo thứ tự bảng chữ cái, có phân biệt chữ hoa chữ thường. Mọi loại Cùng loại với cột
min() Trả về giá trị tối thiểu trong cột cho một nhóm. Ngày so sánh với ngày trước đó nhỏ hơn, string được so sánh theo thứ tự bảng chữ cái, có phân biệt chữ hoa chữ thường Mọi loại Cùng loại với cột
sum() Trả về tổng của tất cả các giá trị trong cột cho một nhóm. number number

Lưu ý: Các hàm tổng hợp chỉ có thể lấy giá trị nhận dạng cột làm đối số:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

Hàm vô hướng

Các hàm vô hướng hoạt động trên 0 tham số trở lên để tạo ra một giá trị khác. Các hàm vô hướng có thể được truyền qua bất kỳ biểu thức nào có giá trị tham số thuộc loại thích hợp. Xin lưu ý rằng các loại này là loại đã được xác định trong mục Văn bản của tài liệu này. Các loại này có thể hơi khác so với đối tượng JavaScript có tên tương tự.

Lưu ý rằng tên cột sẽ thay đổi bằng cách bao bọc cột bằng hàm vô hướng.

Hàm vô hướng có thể là một tham số bất kỳ để đánh giá một giá trị duy nhất:

year(max(startDate))
datediff(now(), todate(1234567890000))

Bạn có thể sử dụng hàm vô hướng trong bất kỳ mệnh đề nào sau đây: select, where, group by, pivot, order by, label, format.

Tên
year()

Trả về giá trị năm từ một giá trị ngày hoặc ngày giờ. Ví dụ: year(date "2009-02-05") trả về năm 2009.

Thông số: Một thông số thuộc loại date hoặc datetime
Loại dữ liệu trả về: number
month()

Trả về giá trị tháng dựa trên 0 từ một ngày hoặc giá trị ngày giờ. Ví dụ: month(date "2009-02-05") trả về 1. Lưu ý: các tháng dựa trên 0, vì vậy hàm trả về 0 cho tháng 1, 1 cho tháng 2, v.v.

Thông số: Một thông số thuộc loại date hoặc datetime
Loại dữ liệu trả về: number
day()

Trả về ngày trong tháng từ giá trị date hoặc ngày giờ. Ví dụ: day(date "2009-02-05") trả về 5.

Thông số: Một thông số thuộc loại date hoặc datetime
Loại dữ liệu trả về: number
hour()

Trả về giá trị giờ từ một giá trị ngày giờ hoặc timeofday. Ví dụ: hour(timeofday "12:03:17") trả về 12.

Thông số: Một thông số thuộc loại datetime hoặc timeofday
Loại dữ liệu trả về: number
minute()

Trả về giá trị phút từ giá trị datetime hoặc timeofday. Ví dụ: minute(timeofday "12:03:17") trả về 3.

Thông số: Một thông số thuộc loại datetime hoặc timeofday
Loại dữ liệu trả về: number
second()

Trả về giá trị thứ hai từ giá trị datetime hoặc timeofday. Ví dụ: second(timeofday "12:03:17") trả về 17.

Thông số: Một thông số thuộc loại datetime hoặc timeofday
Loại dữ liệu trả về: number
millisecond()

Trả về phần mili giây của giá trị datetime hoặc timeofday. Ví dụ: millisecond(timeofday "12:03:17.123") trả về 123.

Thông số: Một thông số thuộc loại datetime hoặc timeofday
Loại dữ liệu trả về: number
quarter()

Trả về quý từ giá trị date hoặc datetime. Ví dụ: quarter(date "2009-02-05") trả về 1. Xin lưu ý rằng các quý được tính theo 1, vì vậy hàm này trả về 1 cho quý đầu tiên, 2 cho quý thứ hai, v.v.

Thông số: Một thông số thuộc loại date hoặc datetime
Loại dữ liệu trả về: number
dayOfWeek()

Trả về ngày trong tuần từ giá trị date hoặc datetime. Ví dụ: dayOfWeek(date "2009-02-26") trả về 5. Xin lưu ý rằng ngày là 1, vì vậy hàm này sẽ trả về giá trị 1 cho Chủ Nhật, 2 cho thứ Hai, v.v.

Thông số: Một thông số thuộc loại date hoặc datetime
Loại dữ liệu trả về: number
now()

Trả về giá trị ngày giờ đại diện cho datetime hiện tại theo múi giờ GMT.

Thông số: Không có
Loại dữ liệu trả về: datetime
dateDiff()

Trả về số ngày chênh lệch giữa hai giá trị date hoặc datetime. Lưu ý: Chỉ những phần date của các giá trị được dùng trong phép tính, do đó hàm luôn trả về một giá trị số nguyên. Ví dụ: dateDiff(date "2008-03-13", date "2008-02-12") trả về 29; dateDiff(date "2009-02-13", date "2009-03-13") trả về -29. Các giá trị thời gian bị cắt ngắn trước khi so sánh.

Tham số: Hai tham số thuộc loại date hoặc datetime (có thể là một trong hai tham số)
Loại dữ liệu trả về: number
toDate()

Chuyển giá trị đã cho thành giá trị date.

  • Với date, hàm này sẽ trả về cùng một giá trị.
  • Với datetime, hàm này sẽ trả về phần date. Ví dụ: toDate(dateTime "2009-01-01 12:00:00") trả về "2009-01-01".
  • Với number N, phương thức này sẽ trả về date N mili giây sau Kỷ nguyên. Thời gian bắt đầu của hệ thống là ngày 1 tháng 1 năm 1970, 00:00:00 GMT. Ví dụ: toDate(1234567890000) trả về "13-02-2009".
Thông số: Một thông số thuộc loại date, datetime hoặc number
Loại dữ liệu trả về: date
upper()

Trả về string cho trước bằng chữ cái viết hoa. Ví dụ: upper("foo") trả về "FOO".

Thông số: Một thông số thuộc loại string
Loại dữ liệu trả về: string
lower()

Trả về string cho trước dưới dạng chữ thường. Ví dụ: lower("Bar") trả về "bar".

Thông số: Một thông số thuộc loại string
Loại dữ liệu trả về: string

Toán tử số học

Bạn có thể sử dụng toán tử số học để thực hiện các phép toán đối với bất kỳ giá trị nào được đánh giá là số duy nhất (tức là kết quả của các hàm tổng hợp, toán tử hoặc hằng số thích hợp).

Ví dụ:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

Những toán tử sau đây được xác định:

Tên Mô tả Các tham số Loại dữ liệu trả về
+ Trả về tổng của hai giá trị number. Hai number number
- Trả về chênh lệch giữa hai giá trị number. Hai number number
* Trả về tích của hai number. Hai number number
/ Trả về thương số của hai number. Phép chia cho 0 sẽ trả về kết quả rỗng. Hai number number

Thành phần ngôn ngữ

Theo nghĩa đen

Văn bản là các giá trị được sử dụng để so sánh hoặc chỉ định. Văn bản có thể là string, số, giá trị boolean hoặc nhiều loại ngày/giờ. Dưới đây là một số ví dụ về các giá trị cố định được sử dụng trong cú pháp truy vấn:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

Dưới đây là các định dạng cho từng loại giá trị cố định:

string
Giá trị cố định string phải được đặt trong một hoặc hai dấu ngoặc kép. Ví dụ: "fourteen" 'hello world' "It's raining".
number
Giá trị cố định dạng số được chỉ định bằng ký hiệu thập phân. Ví dụ: 3  3.0  3.14  -71  -7.2  .6
boolean
Giá trị cố định Boolean là true hoặc false.
date
Dùng từ khoá date, theo sau là giá trị cố định string ở định dạng yyyy-MM-dd. Ví dụ: date "2008-03-18".
timeofday
Dùng từ khoá timeofday, theo sau là giá trị cố định string ở định dạng HH:mm:ss[.SSS] Ví dụ: timeofday "12:30:45".
datetime
Ngày và giờ, sử dụng từ khoá datetime hoặc từ khoá timestamp, theo sau là giá trị cố định string ở định dạng yyyy-MM-dd HH:mm:ss[.sss]. Ví dụ: datetime '2008-03-18 12:30:34.123'

Giá trị nhận dạng

Giá trị nhận dạng (hoặc mã nhận dạng) là văn bản string xác định cột.

Lưu ý quan trọng: Nếu giá trị nhận dạng của bạn

  • Có dấu cách,
  • Là một từ dành riêng,
  • Chứa bất kỳ ký tự nào trừ các ký tự chữ-số hoặc dấu gạch dưới ([a-zA-Z0-9_]), hoặc
  • Bắt đầu bằng một chữ số

phải được đặt trong dấu ngoặc kép (không phải dấu ngoặc đơn).

Ngoài ra, bạn không cần trích dẫn giá trị nhận dạng. (Xin lưu ý rằng không phải tất cả từ khóa mà cú pháp xác định đều là từ đặt trước. Vì vậy, ví dụ: bạn có thể sử dụng "max" làm giá trị nhận dạng mà không cần phải trích dẫn lại.)

Ví dụ: col1   employee_table   `start date`   `7 days traffic`   `select`

Bạn không nên chọn giá trị nhận dạng cần có dấu ngoặc kép, vì bạn có thể dễ dàng quên dùng dấu ngoặc kép hoặc vô tình sử dụng "dấu ngoặc đơn" thay vì "dấu ngoặc kép". Đây là những lỗi thường gặp và thường khó gỡ lỗi.

Phân biệt chữ hoa chữ thường

Giá trị nhận dạng và giá trị cố định kiểu chuỗi có phân biệt chữ hoa chữ thường. Tất cả các phần tử ngôn ngữ khác đều không phân biệt chữ hoa chữ thường.

Từ đặt trước

Các từ đặt trước sau đây phải được đặt trong dấu ngoặc kép nếu được sử dụng làm giá trị nhận dạng:

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where