Hàm tổng hợp (Aggregate functions)


Hàm Định nghĩa người dùng SQL



Download 31.01 Kb.
Page3/3
Date23.01.2024
Size31.01 Kb.
#63292
1   2   3
BT (unsure)
Hàm Định nghĩa người dùng SQL là những hàm do người dùng tạo ra để thực hiện các thao tác cụ thể. Chúng được chia thành hai loại chính:

  1. Hàm vô hướng do người dùng định nghĩa (User-Defined Scalar Functions): Trả về một giá trị duy nhất12. Hàm vô hướng do người dùng định nghĩa trong SQL Server yêu cầu một hoặc nhiều tham số và trả về một giá trị đơn1. Để tạo một hàm vô hướng, bạn sử dụng câu lệnh CREATE FUNCTION1. Ví dụ, bạn có thể có một phép tính phức tạp xuất hiện trong nhiều truy vấn SELECT. Thay vì thêm công thức trong mọi truy vấn, bạn có thể tạo một hàm vô hướng đóng gói công thức này và sử dụng nó trong mỗi truy vấn1.

  2. Hàm trả về bảng do người dùng định nghĩa (User-Defined Table-Valued Functions): Trả về một bảng32. Hàm trả về bảng do người dùng định nghĩa trong SQL Server có thể trả về một bảng dựa trên một hoặc nhiều câu lệnh SQL2. Có hai loại hàm trả về bảng do người dùng định nghĩa: hàm nội tuyến (inline table-valued function) và hàm bao gồm nhiều câu lệnh (multi-statement table-valued function)2. Hàm nội tuyến trả về một bảng dựa trên một câu lệnh SQL duy nhất định nghĩa các dòng và các cột trả về2. Hàm bao gồm nhiều câu lệnh cũng trả về kết quả là một tập hợp nhưng có thể dựa trên nhiều câu lệnh SQL2.

Các hàm này có thể được sử dụng trong các câu lệnh hoặc truy vấn SQL, và cũng có thể được sử dụng trong môi trường lập trình được cung cấp bởi cơ sở dữ liệu SQL Server (Transact-SQL), chẳng hạn như các thủ tục lưu trữ, hàm, trigger, v.v.

Câu 5.1:
Dòng code đấy đang cố gắng tìm in ra tất cả các “Số tự mãn” có 9 chữ số. Một số tự mãn là một số mà tổng của các chữ số của nó mỗi chữ số được nâng lên số mũ bằng số chữ số.


Trong trường hợp này, biến compare được sử dụng để tính tổng của lũy thừa 9 của các chữ số của num. Nếu num bằng với compare, thì num là một số tự mãn và nó được in ra.
Tuy nhiên, có một lỗi trong mã. Biến s nên là chữ số thứ k của num, không phải num modulo position. Dưới đây là bản vá:
#include
#include

int main() {


int num, k;
for (num = 100000000; num <= 999999999; num++) {
int compare = 0;
for (k = 0; k < 9; k++) {
int position = pow(10, k);
int s = (num / position) % 10;
compare += pow(s, 9);
}
if (num == compare) {
printf("%d\n", num);
}
}
return 0;
}
Mã này sẽ in ra tất cả các số tự mãn có 9 chữ số. Xin lưu ý rằng điều này có thể mất một thời gian dài do phạm vi lớn.

Câu 5.2
Dòng code đấy dường như đang cố gắng tìm và in ra tất cả các “Số tự mãn” nhỏ hơn 1,000,000,000. Một số tự mãn là một số mà tổng của các chữ số của nó mỗi chữ số được nâng lên số mũ bằng số chữ số. Tuy nhiên, có một số vấn đề với mã:



  1. Biến i được sử dụng trong hàm snprintf nhưng nó không được định nghĩa hoặc khởi tạo ở bất kỳ đâu.

  2. Hàm power không được định nghĩa. Bạn có thể cần phải bao gồm math.h và sử dụng hàm pow.

  3. Biến j được sử dụng trong vòng lặp for nhưng nó không được định nghĩa.

    Dưới đây là bản vá:



#include
#include

int main() {


unsigned int num;
for (num = 0; num < 1000000000; ++num) {
char digits[15];
unsigned int i, other_num = 0, len;
len = snprintf(digits, sizeof(digits), "%u", num);
for (i = 0; i < len; ++i)
other_num += pow(digits[i] - '0', len);
if (num == other_num)
printf("%u ", num);
}
return 0;
}
Download 31.01 Kb.

Share with your friends:
1   2   3




The database is protected by copyright ©ininet.org 2024
send message

    Main page