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) ;
在 mysql 5.7 中,您可以使用子查询来达到目的,视图似乎比新表更好,但由于选择是相等的,您可以选择
db小提琴此处 p>
这使用了窗口函数,意味着它需要 MySQL 8.0,这是自 2018 年以来 MySQL 的当前版本。
回复您的评论:使用类别中最低 user_id 中的
value
列: