Catatan penting:Saya akan membuat tampilan berdasarkan tabel Anda saat ini dan menghindari penambahan kolom baru, karena akan mendenormalisasi skema Anda. Baca selengkapnya di sini .
Juga, saya akan menggunakan nama huruf kecil untuk semua pengenal untuk menghindari qouting.
- untuk membentuk
GPA_TXT
Anda dapat menggunakanto_char()
fungsi:to_char(gpa, 'FM09.0')
(FM
akan menghindari spasi di depan string yang dihasilkan); -
untuk kolom kedua, saya akan menggunakan
GPA
dan bukanGPA_TXT
untuk perbandingan numerik. Anda dapat memeriksa lebih lanjut diCASE
buat di dokumen , tetapi bloknya mungkin sebagai berikut:CASE WHEN gpa >= 3.3 THEN 'A' WHEN gpa > 2.7 AND gpa < 3.3 THEN 'B' WHEN gpa > 0 THEN 'C' ELSE 'F' END
Maaf, saya tidak tahu bagaimana nilai ditetapkan per IPK, harap sesuaikan.
Kueri yang dihasilkan untuk tampilan mungkin (juga di SQL Fiddle ):
SELECT name,major,gpa,
to_char(gpa, 'FM09.0') AS gpa_txt,
name||'-'||major||'-Grade'||
CASE WHEN gpa >= 3.3 THEN 'A'
WHEN gpa > 2.7 AND gpa < 3.3 THEN 'B'
WHEN gpa > 0 THEN 'C'
ELSE 'F' END || '-' || to_char(gpa, 'FM09.0') AS adesc
FROM atab;
Untuk membuat tampilan, cukup tambahkan CREATE VIEW aview AS
sebelum kueri ini.
EDIT
Jika Anda masih ingin menambahkan kolom, berikut ini triknya:
ALTER TABLE atab ADD gpa_txt text, ADD adesc text;
UPDATE atab SET
gpa_txt = to_char(gpa, 'FM09.0'),
adesc = name||'-'||major||'-Grade'||
CASE WHEN gpa >= 3.3 THEN 'A'
WHEN gpa > 2.7 AND gpa < 3.3 THEN 'B'
WHEN gpa > 0 THEN 'C'
ELSE 'F' END || '-' || to_char(gpa, 'FM09.0');