亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Die Abfrage und die Formel bilden die gesamte Tabelle mit neuen Spalten, wobei die neuen Spalten Formeln sind, die andere bedingte Spaltenwerte beinhalten
P粉178894235
P粉178894235 2024-04-06 21:23:40
0
2
1300

BEARBEITEN: Die Formel sollte die Spalte ?Wert“ sein – die Spalte ?Wert“ mit der niedrigsten Benutzer-ID basierend auf der Kategorie.

Zeile 2 wird also 0,04 sein, weil die Spalte ?value“ der niedrigsten ?user_id“ für Kategorie ?A“ 0,01 ist.

Entschuldigung.

Ich m?chte alles aus der Tabelle abrufen und eine weitere Spalte hinzufügen, die Formeln enth?lt, die Informationen enthalten, die auf anderen Spalten basieren. Hier ist das Originalformular:

Kategorie Benutzer-ID Wert
eins 1 0,01
eins 2 0,05
B 4 0,34
B 7 0,27

Die neue Spalte muss der Mindestwert ?user_id“ der Spalte ?value“ jeder Zeile abzüglich der ?category“ sein . Für die zweite Zeile betr?gt der Wert also (0,05 – 1), da die Kategorie ?A“ ist und die niedrigste ?user_id“ von ?A“ 1 ist.

Es gibt noch viele weitere Zeilen und Spalten, dies ist nur ein Beispiel.

Welche Formel würde ich verwenden?

Das ist es, was ich bisher habe, nur um zu zeigen, dass ich in der Lage bin, neue Spalten zu erstellen, aber ohne die richtige Formel:

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;

Das gibt mir natürlich die neue Spalte, aber bei 0 (weil sie sich selbst subtrahiert).

Was ist die richtige Formel?

Das ist die Architektur:

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

Antworte allen(2)
P粉302160436

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

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 |
+----------+---------+-------+----------------+

這使用了窗口函數(shù),意味著它需要 MySQL 8.0,這是自 2018 年以來 MySQL 的當(dāng)前版本。


回復(fù)您的評論:使用類別中最低 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 |
+----------+---------+-------+----------------+
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage