簡體   English   中英

如何在 SQL 中添加一列並在單個查詢中同時基於其他列設置其值?

[英]How can i add a column in SQL and set its values based on other columns at the same time in a single query?

例如,我有一個Student表,其中的列名為: idnamemarks_obtainedtotal_marks等。

我想添加一個名為percentage的列,其值將等於( marks_obtained / total_marks )*100。

如何在單個查詢中完成整個事情?

在 Oracle 11g 中(因為它被標記為 Oracle),您可以使用虛擬列:

SQL小提琴

Oracle 11g R2 架構設置

CREATE TABLE Student ( id, name, marks_obtained, total_marks ) AS
          SELECT 1, 'Alice',  90, 100 FROM DUAL
UNION ALL SELECT 2, 'Bob',    72, 100 FROM DUAL
UNION ALL SELECT 3, 'Claire', 93, 105 FROM DUAL;

ALTER TABLE Student ADD (
  percentage NUMBER GENERATED ALWAYS AS ( marks_obtained * 100 / total_marks ) VIRTUAL
);

查詢 1

SELECT * FROM Student

結果

| ID |   NAME | MARKS_OBTAINED | TOTAL_MARKS |        PERCENTAGE |
|----|--------|----------------|-------------|-------------------|
|  1 |  Alice |             90 |         100 |                90 |
|  2 |    Bob |             72 |         100 |                72 |
|  3 | Claire |             93 |         105 | 88.57142857142857 |

如果您不想在表中添加計算列,您可以在獲取數據的 SQL 中進行計算,例如:

SELECT id,
       name,
       marks_obtained,
       total_marks,
       (marks_obtained / total_marks) * 100 AS PERCENTAGE
  FROM STUDENT

SQLFiddle在這里

祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM