EDIT: Formula hendaklah lajur "nilai" - lajur "nilai" dengan user_id terendah berdasarkan kategori.
Jadi baris 2 akan menjadi 0.04 kerana lajur "nilai" bagi "id_pengguna" terendah untuk kategori "A" ialah 0.01.
Maaf.
Saya ingin mendapatkan semula semua daripada jadual dan menambah lajur lain yang melibatkan formula yang mengandungi maklumat berdasarkan lajur lain. Berikut adalah bentuk asal:
Kategori | user_id | Nilai |
---|---|---|
satu | 1 | 0.01 |
satu | 2 | 0.05 |
B | 4 | 0.34 |
B | 7 | 0.27 |
Lajur baharu mestilah nilai minimum "id_pengguna" bagi setiap lajur "nilai" baris tolak "kategori" . Jadi untuk baris kedua ia akan menjadi (0.05 - 1) kerana kategorinya ialah "A" dan "user_id" terendah bagi "A" ialah 1.
Ada banyak lagi baris dan lajur, ini hanya contoh.
Apakah formula yang akan saya gunakan?
Inilah yang saya miliki setakat ini, hanya untuk dapat menunjukkan bahawa saya mampu mencipta lajur baharu, tetapi tanpa formula yang betul:
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;
Ini jelas memberi saya lajur baharu, tetapi pada 0 (kerana ia menolak dirinya sendiri).
Apakah formula yang betul?
Ini adalah seni bina:
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) ;
Dalam mysql 5.7 anda boleh menggunakan subquery untuk mencapai matlamat, pandangan kelihatan lebih baik daripada jadual baharu, tetapi memandangkan pilihan adalah sama, anda boleh memilih
dbfiddle sini p>
Ini menggunakan fungsi tetingkap, bermakna ia memerlukan MySQL 8.0, iaitu versi MySQL semasa pada 2018.
Balas ulasan anda: Gunakan lajur
value
dari user_id terendah dalam kategori: