查詢和公式形成整個表,帶有新列,其中新列是涉及其他條件列值的公式
P粉178894235
P粉178894235 2024-04-06 21:23:40
0
2
520

編輯:公式應該是「值」欄位 - 根據類別具有最低 user_id 的「值」欄位。

因此第 2 行將為 0.04,因為類別「A」的最低「user_id」的「value」欄位是 0.01。

抱歉。

我想從表中檢索所有內容,並添加另一列,其中涉及包含基於其他列的資訊的公式。這是原始表格:

類別 user_id
一個 1 0.01
一個 2 0.05
B 4 0.34
B 7 0.27

新欄位必須是每行的「值」欄位減去「類別」的最小值「user_id」。因此,對於第二行,它將是 (0.05 - 1),因為類別是“A”,而“A”的最低“user_id”是 1。

還有更多的行和列,這只是一個範例。

我會用什麼公式?

這是我到目前為止所擁有的,只是為了能夠證明我能夠創建新列,但沒有正確的公式:

CREATE TABLE new_table 
 AS (select * FROM table_1);
 
 ALTER TABLE new_table
 ADD COLUMN `new_column` DECIMAL(3,2)
 GENERATED ALWAYS AS (table_1.value-table_1.value) STORED;
 
 select * from new_table;

這顯然給了我新的列,但為 0(因為它減去了自身)。

正確的公式是什麼?

這是架構:

CREATE TABLE table_1 (
  `category` VARCHAR(2),
  `user_id` INT(2), 
  `value` DECIMAL(3,2)
 );
INSERT INTO table_1
(`category`, `user_id`, `value`)
VALUES
('A', 1, 0.01),
('A', 2, 0.05),
('B', 4, 0.34),
('B', 7, 0.27)
;

P粉178894235
P粉178894235

全部回覆(2)
P粉302160436

在 mysql 5.7 中,您可以使用子查詢來達到目的,視圖似乎比新表更好,但由於選擇是相等的,您可以選擇

db小提琴此處 p>#

P粉627027031
mysql> create view new_table as 
  select category, user_id, value, 
    value - min(user_id) over (partition by category) as adjusted_value
  from table_1;

mysql> select * from new_table;
+----------+---------+-------+----------------+
| category | user_id | value | adjusted_value |
+----------+---------+-------+----------------+
| A        |       1 |  0.01 |          -0.99 |
| A        |       2 |  0.05 |          -0.95 |
| B        |       4 |  0.34 |          -3.66 |
| B        |       7 |  0.27 |          -3.73 |
+----------+---------+-------+----------------+

這使用了視窗函數,表示它需要 MySQL 8.0,這是自 2018 年以來 MySQL 的當前版本。


回覆您的評論:使用類別中最低 user_id 中的 value 欄位:

mysql> create or replace view new_table as 
  select category, user_id, value, 
    value - first_value(value) over (partition by category order by user_id) as adjusted_value  
  from table_1;

mysql> select * from new_table;
+----------+---------+-------+----------------+
| category | user_id | value | adjusted_value |
+----------+---------+-------+----------------+
| A        |       1 |  0.01 |           0.00 |
| A        |       2 |  0.05 |           0.04 |
| B        |       4 |  0.34 |           0.00 |
| B        |       7 |  0.27 |          -0.07 |
+----------+---------+-------+----------------+
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!