PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak mogę utworzyć kolumnę w postgresie z wartości i selekcji opartych na innych kolumnach?

Ważna uwaga:utworzyłbym widok w oparciu o aktualną tabelę i uniknięto dodawania nowych kolumn, ponieważ spowodują one denormalizację schematu. Przeczytaj więcej tutaj .

Ponadto będę używał nazw małych liter dla wszystkich identyfikatorów, aby uniknąć cytowania.

  • utworzyć GPA_TXT pole, którego możesz użyć to_char() funkcja:to_char(gpa, 'FM09.0') (FM uniknie spacji przed wynikowym ciągiem);
  • w drugim polu użyłbym GPA a nie GPA_TXT do porównania numerycznego. Możesz sprawdzić więcej na CASE konstrukcja w dokumentacji , ale blok może być następujący:

    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
    

Przepraszam, nie wiem, w jaki sposób oceny są przydzielane według GPA, proszę o odpowiednie dostosowanie.

Wynikowe zapytanie dla widoku może być (również na 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;

Aby zbudować widok, po prostu dopisz CREATE VIEW aview AS przed tym zapytaniem.

EDYTUJ

Jeśli nadal chcesz dodawać kolumny, wykonaj następujące czynności:

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');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Żądanie zapytania transpozycji krzyżowej

  2. Kompilacja rozszerzenia pg_repack na binarnym formacie instalacji PostgreSQL

  3. Uzyskaj wynik z zapytania w funkcji DO

  4. Postgres zawija wyniki podzapytania w nawiasy

  5. Wybierz dziwne znaki w tekście, nie działa z operatorem LIKE