Tôi gần như phát điên khi cố gắng giải quyết vấn đề này:Truy vấn SQL để đếm số người dùng đã đăng ký mỗi ngày
Trong người dùng ứng dụng của tôi có thể đăng ký và xóa chính họ. Ngày tạo và ngày xóa được lưu giữ trong cơ sở dữ liệu dưới dạng dấu thời gian. Tôi cần phải biết cho mỗi ngày trong một loạt các ngày, có bao nhiêu người dùng đã đăng ký và không bị xóa tồn tại vào ngày đó.
Vì vậy, nếu tôi có 10 người dùng hiện tại vào ngày 2012-02-01, một người dùng đã xóa tài khoản vào 2012-02-03, ba người dùng đã đăng ký vào 2012-02-04 và hai người dùng đã xóa vào 2012-02- 06, và truy vấn tổng số người dùng đã đăng ký từ 2012-02-01 cho đến 2012-02-07 Tôi muốn nhận được kết quả như sau:
day total_users 2012-02-01 10 2012-02-02 10 2012-02-03 9 2012-02-04 12 2012-02-05 12 2012-02-06 10 2012-02-07 10
Đây là cách bảng người dùng đơn giản của tôi trông giống như:
user_id, user_name, created_at, deleted_at
Không có vấn đề gì để lấy số o e đã đăng ký và không phải người dùng xóa một ngày cụ thể (ở đây 2012/02/01, mà sẽ làm cho tôi 10 trong ví dụ của tôi):
select application.application_id as application_id, count(user.user_id) as user_total
from application, user
where application.application_id = user.application_id
and date(user.created_at) <= '2012-02-01'
and ((date(user.deleted_at) > '2012-02-01') or (user.deleted_at is null))
Ai có một đầu mối làm thế nào tôi có thể tạo ra một truy vấn (mà không có một con trỏ) sẽ có kết quả mong đợi của tôi? Cơ sở dữ liệu của tôi là một MySQL 5.0.51 trên Debian.
Cảm ơn trước Marcus
Cảm ơn bạn rất nhiều, điều này hoạt động hoàn hảo! Tôi chỉ phải thay thế "i" trong mỗi dòng với t0, t1 vv, tôi nghĩ rằng đây là lỗi máy chủ MySQL cũ của tôi. –
@MarcusMuench: Rất tiếc, lỗi của tôi. Tôi đã sửa chữa truy vấn - cảm ơn. –