Tôi có một số vấn đề khi viết truy vấn SQL cho MySQL. Tôi có một bảng với cấu trúc sau:Truy vấn SQL với avg và nhóm theo
mysql> select id, pass, val from data_r1 limit 10;
+------------+--------------+----------------+
| id | pass | val |
+------------+--------------+----------------+
| DA02959106 | 5.0000000000 | 44.4007000000 |
| 08A5969201 | 1.0000000000 | 182.4100000000 |
| 08A5969201 | 2.0000000000 | 138.7880000000 |
| DA02882103 | 5.0000000000 | 44.7265000000 |
| DA02959106 | 1.0000000000 | 186.1470000000 |
| DA02959106 | 2.0000000000 | 148.2660000000 |
| DA02959106 | 3.0000000000 | 111.9050000000 |
| DA02959106 | 4.0000000000 | 76.1485000000 |
| DA02959106 | 5.0000000000 | 44.4007000000 |
| DA02959106 | 4.0000000000 | 76.6485000000 |
Tôi muốn tạo ra một truy vấn mà chiết xuất các thông tin sau từ bảng:
id, AVG of 'val' for 'pass' = 1, AVG of 'val' for 'pass' = 2, etc
Kết quả của truy vấn sẽ trông như thế này:
+------------+---------+---------+---------+---------+---------+---------+---------+
| id | val_1 | val_2 | val_3 | val_4 | val_5 | val_6 | val_7 |
+------------+---------+---------+---------+---------+---------+---------+---------+
| DA02959106 | 186.147 | 148.266 | 111.905 | 76.3985 | 44.4007 | 0 | 0 |
+------------+---------+---------+---------+---------+---------+---------+---------+
với nhiều hàng hơn cho mỗi 'id' duy nhất, tất nhiên.
Tôi đã thử một số truy vấn như
SELECT id, pass, AVG(val) AS val_1 FROM data_r1 WHERE pass = 1 GROUP BY id;
này trả về kết quả chính xác, nhưng tôi phải mở rộng nó với kết quả cho các giá trị khác có thể xảy ra 'vượt qua' (lên đến 7)
tôi đã cố gắng sử dụng một SELECT lồng nhau trong AVG nhưng điều này đã không làm việc vì tôi đã không tìm ra cách để giới hạn chính xác nó đến 'id' hiện tại.
Sau đó, tôi đã tạo Chế độ xem để biểu thị kết quả của mỗi truy vấn cho 'pass' = 1, 'pass' = 2, v.v. Nhưng đối với hầu hết các id, giá trị cao nhất cho 'pass' là 5. Khi sử dụng JOIN queries để nhận kết quả cuối cùng từ các khung nhìn tôi nhận được một tập kết quả rỗng, bởi vì một số các khung nhìn là rỗng/không có các giá trị cho một 'id' cụ thể.
Bất kỳ ý tưởng nào?
Bạn có '3' hồ sơ với' qua = 5', tất cả đều có id khác nhau. Bạn muốn cái nào trong số các 'id' này? Vui lòng đăng đầu ra bạn mong đợi cho dữ liệu bạn đã cung cấp. – Quassnoi
Giá trị AVG của bạn có phải nằm trong cột hoặc truy vấn mong muốn của bạn có trả về nhiều hàng vì có nhiều giá trị vượt qua khác nhau không? –
Tôi đã chỉnh sửa câu hỏi của tôi và thêm một bảng như thế nào tôi mong đợi kết quả của tôi. Tôi phải cung cấp kết quả cho một chương trình khác, vì vậy sẽ có một id cho mỗi hàng. – theFen