Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đếm các giá trị không liền kề

Truy vấn đầu tiên của bạn tốt hơn bạn nên viết nó như thế này:

« trường hợp khi (current_level =200 AND current_level <> @lev) thì 1 kết thúc khác 0) là TIMES, nếu (current_level =200 AND current_level <> @lev, @lev:=current_level, 0) NHƯ vô dụng3 TỪ sensor_logs, (CHỌN @ id:='none', @lev:=10) var_init_subquery ĐẶT HÀNG THEO hướng dẫn

Không chỉ thực hiện thứ tự rõ ràng khi cần thiết, không phải trong một truy vấn con, việc thực hiện nó trong một truy vấn con cũng có thể dẫn đến một kế hoạch thực thi không tốt (có nghĩa là hiệu suất kém trong trường hợp bảng tạm thời).

Đối với kết quả cuối cùng của bạn, bạn không nên áp dụng trực tiếp GROUP BY, v.v. CHỌN (và do đó, các biến và phép tính của bạn) được đánh giá sau NHÓM BẰNG. Để thực hiện nhóm sau khi tính toán, hãy đặt truy vấn của bạn vào một truy vấn con:

  CHỌN hướng dẫn, SUM (lần) TỪ (SELECT hướng dẫn, current_level, nếu (@id <> hướng dẫn, @lev:=10, 0) NHƯ vô dụng, trường hợp khi @id <> hướng dẫn thì @id:=guide else 0 end AS nothing2, (trường hợp khi (current_level =200 AND current_level <> @lev) thì 1 else 0 end) là TIMES, nếu (current_level =200 AND current_level <> @lev, @lev:=current_level, 0 ) NHƯ vô dụng3 TỪ sensor_logs, (SELECT @id:='none', @lev:=10) var_init_subquery ORDER BY Guid) sqGROUP THEO hướng dẫn  



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chọn hàng đầu tiên cho mỗi nhóm trong MySQL?

  2. Làm thế nào để CHỌN hai cột, trong đó một cột phải là DISTINCT?

  3. sắp xếp tùy chỉnh mysql

  4. Cách tìm số có 4 chữ số duy nhất miễn phí tiếp theo

  5. Các câu lệnh đã chuẩn bị có được lưu vào bộ nhớ cache phía máy chủ qua nhiều lần tải trang bằng PHP không?