[英]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
表,其中的列名為: id
、 name
、 marks_obtained
、 total_marks
等。
我想添加一個名為percentage
的列,其值將等於( marks_obtained
/ total_marks
)*100。
如何在單個查詢中完成整個事情?
在 Oracle 11g 中(因為它被標記為 Oracle),您可以使用虛擬列:
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
祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.