SAP Fungsi SQL HANA: Tipe & Contoh
โก Ringkasan Cerdas
SAP Fungsi SQL HANA mengubah nilai di dalam kueri tanpa memindahkan data ke lapisan aplikasi. Tujuh kategori mencakup konversi tipe data, tanggal dan waktu, teks lengkap, angka, string, jendela, dan operasi lain-lain.

SAP Fungsi SQL HANA
SAP HANA menyediakan berikut ini SAP Fungsi HANA-
- Fungsi Konversi Tipe Data โ Fungsi konversi Tipe Data digunakan untuk mengubah satu tipe data ke tipe data lainnya. Di bawah ini adalah daftar fungsi Konversi Tipe Data-Misalnya CAST, TO_ALPHANUM, TO_BIGINT, TO_BINARY dll.
- Fungsi Tanggal Waktu โ Fungsi Tanggal dan Waktu digunakan untuk mengkonversi Tanggal/Waktu ke format yang berbeda. Contoh: ADD_DAYS, ADD_MONTHS, ADD_SECOND, dll.
- Fungsi Teks Lengkap โ Fungsi Fulltext digunakan untuk pencarian teks. Contoh: SCORE, dll.
- Fungsi Angka โ Fungsi angka menerima nilai numerik, atau string dengan karakter numerik, sebagai input dan mengembalikan nilai numerik. Contoh: ABS, ROUND, POWER, dll.
- Fungsi String โ Fungsi string menerima string sebagai input, memprosesnya, dan mengembalikan nilai sesuai dengan fungsi tersebut. Contoh: (ASCII, CHAR, CONCAT, dll.)
- Fungsi Jendela โ Fungsi Window memungkinkan pengguna untuk membagi hasil kueri menjadi beberapa kelompok baris yang diberi nama partisi jendela. Contohnya RANK(), DENSE_RANK(), ROW_NUMBER(), dll.
- Fungsi Lain-Lain- Ada beberapa fungsi lagi yang digunakan untuk pekerjaan lain-lain. Misalnya โ CONVERT_CURRENCY, CURRENT_SCHEMA, dll.
Setiap fungsi di atas dievaluasi di dalam mesin basis data, itulah sebabnya memasukkan logika ke dalam fungsi hampir selalu lebih cepat daripada mengambil baris dan memprosesnya di dalam aplikasi. Contoh di bawah ini menggunakan tabel DUMMY, tabel sistem satu baris yang ada semata-mata agar ekspresi dapat diuji tanpa menyentuh data sebenarnya.
Fungsi Skalar, Agregat, dan Jendela
Sebelum membahas contoh-contohnya, ada satu perbedaan yang menentukan bagaimana sebuah fungsi berperilaku dalam sebuah kueri: berapa banyak baris yang masuk, dan berapa banyak yang keluar.
| Kategori | Jumlah baris masuk : jumlah baris keluar | Perlu menggunakan GROUP BY? | contoh |
|---|---|---|---|
| Skalar | Satu baris ke satu baris | Tidak | UPPER, ROUND, TO_DATE, CAST |
| Agregat | Banyak baris menjadi satu baris | Ya, kecuali jika seluruh set tersebut merupakan satu kelompok. | JUMLAH, AVG, JUMLAH, MINIMUM, MAKS |
| Jendela | Banyak baris ke banyak baris | Tidak, yang digunakan adalah OVER. | PERINGKAT, PERINGKAT_PADAT, NOMOR_BARIS, KETERLAMBATAN |
| tabel | Mengembalikan kumpulan hasil | Digunakan dalam klausa FROM | TANGGAL_HASIL_SERI |
Konsekuensi praktisnya adalah bahwa fungsi agregat menghilangkan detail, sedangkan fungsi jendela mempertahankannya. Meminta setiap karyawan beserta rata-rata departemen mereka membutuhkan fungsi jendela, karena GROUP BY akan menghapus seluruh baris individual.
Umum SAP Fungsi HANA Beserta Contohnya
Pernyataan-pernyataan di bawah ini dapat langsung disalin ke konsol SQL. Masing-masing menunjukkan satu kategori dari daftar di atas.
1) Fungsi string. Fungsi ini menerima input berupa karakter dan mengembalikan nilai turunan.
SELECT UPPER('sap hana') AS UPPER_TEXT, LENGTH('SAP HANA') AS TEXT_LENGTH, CONCAT('SAP ', 'HANA') AS JOINED, SUBSTRING('SAP HANA', 5, 4) AS PART, REPLACE('SAP HANA', 'HANA', 'S/4') AS SWAPPED, TRIM(' padded ') AS CLEANED FROM DUMMY;
2) Fungsi angka. Perilaku pembulatan perlu diuji, karena ROUND menggunakan pembulatan komersial sedangkan FLOOR dan CEIL selalu bergerak ke satu arah.
SELECT ABS(-45.7) AS ABSOLUTE_VALUE, ROUND(123.4567, 2) AS ROUNDED, FLOOR(9.9) AS ROUNDED_DOWN, CEIL(9.1) AS ROUNDED_UP, POWER(2, 10) AS RAISED, MOD(17, 5) AS REMAINDER FROM DUMMY;
3) Fungsi tanggal dan waktu. Ini adalah dokumen-dokumen yang paling sering dibutuhkan untuk pelaporan periodik.
SELECT CURRENT_DATE AS TODAY, ADD_DAYS(CURRENT_DATE, 30) AS IN_30_DAYS, ADD_MONTHS(CURRENT_DATE, -1) AS LAST_MONTH, DAYS_BETWEEN('2026-01-01', CURRENT_DATE) AS ELAPSED, LAST_DAY(CURRENT_DATE) AS MONTH_END, WEEKDAY(CURRENT_DATE) AS DAY_INDEX FROM DUMMY;
4) Fungsi konversi. Konversi eksplisit mencegah pemaksaan tipe diam-diam yang memperlambat klausa WHERE.
SELECT CAST('1234' AS INTEGER) AS AS_NUMBER, TO_VARCHAR(CURRENT_DATE, 'DD.MM.YYYY') AS AS_TEXT, TO_DECIMAL(1234.5678, 10, 2) AS AS_DECIMAL FROM DUMMY;
Perilaku tipe dan batasan dari setiap tipe target dibahas dalam SAP Tipe data HANA.
Penjelasan Fungsi Jendela
Fungsi jendela melakukan perhitungan di seluruh kumpulan baris yang terkait dengan baris saat ini, tanpa menggabungkannya. Klausa OVER mendefinisikan kumpulan tersebut, dan memiliki dua bagian opsional: PARTITION BY membagi data menjadi beberapa kelompok, dan ORDER BY menetapkan urutan di dalam setiap kelompok.
SELECT DEPARTMENT, EMP_NAME, SALARY, ROW_NUMBER() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS ROW_NUM, RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS RANKING, DENSE_RANK() OVER (PARTITION BY DEPARTMENT ORDER BY SALARY DESC) AS DENSE_RANKING, SUM(SALARY) OVER (PARTITION BY DEPARTMENT) AS DEPT_TOTAL FROM DHK_SCHEMA.EMPLOYEE;
Ketiga fungsi pemeringkatan tersebut hanya berbeda ketika nilainya sama:
- ROW_NUMBER Tidak pernah seri. Dua gaji yang identik tetap menerima peringkat 1 dan 2, yang dipilih secara acak.
- RANK Memberikan nomor yang sama pada baris yang sama lalu melompati satu baris. Dua baris di nomor 1 diikuti oleh 3.
- PADAT_RANK Memberikan nomor yang sama pada baris yang sama dan tidak melewatkan satu baris pun. Dua baris dengan nomor 1 diikuti oleh baris dengan nomor 2.
Gunakan ROW_NUMBER untuk menghilangkan duplikasi, RANK untuk penempatan gaya kompetisi, dan DENSE_RANK ketika urutan harus tetap tidak terputus. Simbol perbandingan dan logika yang digunakan bersama fungsi-fungsi ini dibahas dalam SAP Operator HANA, dan struktur pernyataan dalam SAP HANA SQL.
