

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Ekspresi
<a name="r_expressions"></a>

**Topics**
+ [Ekspresi sederhana](#r_expressions-simple-expressions)
+ [Ekspresi majemuk](r_compound_expressions.md)
+ [Daftar ekspresi](r_expression_lists.md)
+ [Subkueri skalar](r_scalar_subqueries.md)
+ [Ekspresi fungsi](r_function_expressions.md)

Ekspresi adalah kombinasi dari satu atau lebih nilai, operator, atau fungsi yang mengevaluasi nilai. Tipe data ekspresi umumnya adalah komponennya. 

## Ekspresi sederhana
<a name="r_expressions-simple-expressions"></a>

Ekspresi sederhana adalah salah satu dari berikut ini: 
+ Nilai konstan atau literal 
+ Nama kolom atau referensi kolom 
+ Fungsi skalar 
+ Fungsi agregat (set) 
+ Fungsi jendela 
+ Sebuah subquery skalar 

Contoh ekspresi sederhana meliputi: 

```
5+12
dateid
sales.qtysold * 100
sqrt (4)
max (qtysold)
(select max (qtysold) from sales)
```

# Ekspresi majemuk
<a name="r_compound_expressions"></a>

Ekspresi majemuk adalah serangkaian ekspresi sederhana yang digabungkan oleh operator aritmatika. Ekspresi sederhana yang digunakan dalam ekspresi majemuk harus mengembalikan nilai numerik.

## Sintaksis
<a name="r_compound_expressions-synopsis"></a>

```
expression 
operator 
expression | (compound_expression)
```

## Argumen
<a name="r_compound_expressions-arguments"></a>

 *ekspresi*   
Ekspresi sederhana yang mengevaluasi nilai.

 *operator*   
 Ekspresi aritmatika majemuk dapat dibangun menggunakan operator berikut, dalam urutan prioritas ini:  
+ (): tanda kurung untuk mengontrol urutan evaluasi
+ \$1, -: tanda/operator positif dan negatif
+  ^, \$1/, \$1\$1/: eksponensial, akar kuadrat, akar kubus
+ \$1,/,%: operator perkalian, pembagian, dan modulo
+  @: nilai absolut
+ \$1, -: penambahan dan pengurangan
+ &, \$1, \$1, \$1, <<, >>: DAN, ATAU, TIDAK, geser ke kiri, geser operator bitwise kanan
+ \$1\$1: penggabungan

 *(compound\$1expression)*   
Ekspresi majemuk dapat disarangkan menggunakan tanda kurung.

## Contoh
<a name="r_compound_expressions-examples"></a>

Contoh ekspresi majemuk meliputi yang berikut ini.

```
('SMITH' || 'JONES')
sum(x) / y
sqrt(256) * avg(column)
rank() over (order by qtysold) / 100
(select (pricepaid - commission) from sales where dateid = 1882) * (qtysold)
```

Beberapa fungsi juga dapat disarangkan dalam fungsi lain. Misalnya, fungsi skalar apa pun dapat bersarang di dalam fungsi skalar lain. Contoh berikut mengembalikan jumlah nilai absolut dari satu set angka:

```
sum(abs(qtysold))
```

Fungsi jendela tidak dapat digunakan sebagai argumen untuk fungsi agregat atau fungsi jendela lainnya. Ekspresi berikut akan mengembalikan kesalahan:

```
avg(rank() over (order by qtysold))
```

Fungsi jendela dapat memiliki fungsi agregat bersarang. Ekspresi berikut menjumlahkan kumpulan nilai dan kemudian memeringkatnya:

```
rank() over (order by sum(qtysold))
```

# Daftar ekspresi
<a name="r_expression_lists"></a>

Daftar ekspresi adalah kombinasi ekspresi, dan dapat muncul dalam kondisi keanggotaan dan perbandingan (klausa WHERE) dan dalam klausa GROUP BY.

## Sintaksis
<a name="r_expression_lists-synopsis"></a>

```
expression , expression , ... | (expression, expression, ...)
```

## Argumen
<a name="r_expression_lists-arguments"></a>

 *ekspresi*   
Ekspresi sederhana yang mengevaluasi nilai. Daftar ekspresi dapat berisi satu atau lebih ekspresi dipisahkan koma atau satu atau lebih kumpulan ekspresi dipisahkan koma. Ketika ada beberapa set ekspresi, setiap set harus berisi jumlah ekspresi yang sama, dan dipisahkan oleh tanda kurung. Jumlah ekspresi di setiap set harus sesuai dengan jumlah ekspresi sebelum operator dalam kondisi.

## Contoh
<a name="r_expression_lists-examples"></a>

Berikut ini adalah contoh daftar ekspresi dalam kondisi:

```
(1, 5, 10)
('THESE', 'ARE', 'STRINGS')
(('one', 'two', 'three'), ('blue', 'yellow', 'green'))
```

Jumlah ekspresi di setiap set harus sesuai dengan angka di bagian pertama pernyataan:

```
select * from venue
where (venuecity, venuestate) in (('Miami', 'FL'), ('Tampa', 'FL'))
order by venueid;

venueid |        venuename        | venuecity | venuestate | venueseats
---------+-------------------------+-----------+------------+------------
28 | American Airlines Arena | Miami     | FL         |          0
54 | St. Pete Times Forum    | Tampa     | FL         |          0
91 | Raymond James Stadium   | Tampa     | FL         |      65647
(3 rows)
```

# Subkueri skalar
<a name="r_scalar_subqueries"></a>

Subquery skalar adalah kueri SELECT biasa dalam tanda kurung yang mengembalikan tepat satu nilai: satu baris dengan satu kolom. Kueri dijalankan dan nilai yang dikembalikan digunakan dalam kueri luar. Jika subquery mengembalikan nol baris, nilai ekspresi subquery adalah nol. Jika mengembalikan lebih dari satu baris, Amazon Redshift mengembalikan kesalahan. Subquery dapat merujuk ke variabel dari kueri induk, yang akan bertindak sebagai konstanta selama salah satu pemanggilan subquery.

Anda dapat menggunakan subkueri skalar di sebagian besar pernyataan yang membutuhkan ekspresi. Subquery skalar bukan ekspresi yang valid dalam kasus berikut:
+ Sebagai nilai default untuk ekspresi
+ Dalam klausa GROUP BY dan HAVING

## Contoh
<a name="r_scalar_subqueries-example"></a>

Subquery berikut menghitung harga rata-rata yang dibayarkan per penjualan sepanjang tahun 2008, kemudian kueri luar menggunakan nilai tersebut dalam output untuk membandingkan dengan harga rata-rata per penjualan per kuartal:

```
select qtr, avg(pricepaid) as avg_saleprice_per_qtr,
(select avg(pricepaid)
from sales join date on sales.dateid=date.dateid
where year = 2008) as avg_saleprice_yearly
from sales join date on sales.dateid=date.dateid
where year = 2008
group by qtr
order by qtr;
qtr  | avg_saleprice_per_qtr | avg_saleprice_yearly
-------+-----------------------+----------------------
1     |                647.64 |               642.28
2     |                646.86 |               642.28
3     |                636.79 |               642.28
4     |                638.26 |               642.28
(4 rows)
```

# Ekspresi fungsi
<a name="r_function_expressions"></a>

## Sintaksis
<a name="r_function_expressions-syntax"></a>

Setiap built-in dapat digunakan sebagai ekspresi. Sintaks untuk panggilan fungsi adalah nama fungsi diikuti oleh daftar argumen dalam tanda kurung. 

```
function ( [expression [, expression...]] )
```

## Pendapat
<a name="r_function_expressions-arguments"></a>

 *fungsi*   
Fungsi bawaan apa pun. Untuk beberapa contoh fungsi, lihat[Referensi fungsi SQL](c_SQL_functions.md).

 *ekspresi*   
Ekspresi apa pun yang cocok dengan tipe data dan jumlah parameter yang diharapkan oleh fungsi. 

## Contoh
<a name="r_function_expressions-examples"></a>

```
abs (variable)
select avg (qtysold + 3) from sales;
select dateadd (day,30,caldate) as plus30days from date;
```