Tôi đang cố gắng thiết lập báo cáo với các trường sau:
Thực sự cần một báo cáo để hiển thị ngày, tổng số bản ghi trong ngày đó (vì vậy tôi đang nhóm theo ngày) và sau đó theo giờ trong một ngày làm việc 12 giờ (từ 8 giờ sáng đến 8 giờ tối) Tôi cần tính toán thời điểm một bản ghi xuất hiện trong đó giờ . Sau một hồi đắn đo suy nghĩ, tôi nghĩ tại sao không sử dụng một chiếc ốp lưng. Đây là những gì tôi đã thử:
LỰA CHỌN
DATE_FORMAT(thời gian đăng nhập, '%b %d, %Y') Ngày,
COUNT(session_id) là Tổng số,
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 08 VÀ GIỜ(thời gian đăng nhập) < 09 THÌ 1 KHÁC 0 KẾT THÚC) '8 SÁNG-9 TỐI',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 09 VÀ GIỜ(thời gian đăng nhập) < 10 THÌ 1 KHÁC 0 KẾT THÚC) '9AM-10AM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 10 VÀ GIỜ(thời gian đăng nhập) < 11 THÌ 1 KHÁC 0 KẾT THÚC) '10AM-11AM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 11 VÀ GIỜ(thời gian đăng nhập) < 12 THÌ 1 KHÁC 0 KẾT THÚC) '11AM-12PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 12 VÀ GIỜ(thời gian đăng nhập) < 13 THÌ 1 KHÁC 0 KẾT THÚC) '12PM-1PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 13 VÀ GIỜ(thời gian đăng nhập) < 14 THÌ 1 KHÁC 0 KẾT THÚC) '1PM-2PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 14 VÀ GIỜ(thời gian đăng nhập) < 15 THÌ 1 KHÁC 0 KẾT THÚC) '2PM-3PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 15 VÀ GIỜ(thời gian đăng nhập) < 16 THÌ 1 KHÁC 0 KẾT THÚC) '3PM-4PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 16 VÀ GIỜ(thời gian đăng nhập) < 17 THÌ 1 KHÁC 0 KẾT THÚC) '4PM-5PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 17 VÀ GIỜ(thời gian đăng nhập) < 18 THÌ 1 KHÁC 0 KẾT THÚC) '5PM-6PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 18 VÀ GIỜ(thời gian đăng nhập) < 19 THÌ 1 KHÁC 0 KẾT THÚC) '6PM-7PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) > 19 VÀ GIỜ(thời gian đăng nhập) < 20 THÌ 1 KHÁC 0 KẾT THÚC) '7PM-8PM'
TỪ phiên
NƠI session.status = '3'
NHÓM theo GIỜ(thời gian đăng nhập), Ngày;
Nếu bạn để ý trong hình trên, tổng số trong cả ngày (19 tháng 4 năm 2013) là 1, và bây giờ nếu bạn để ý thời gian (8 giờ sáng - 8 giờ tối), tất cả đều bằng 0. Tôi không biết phải đi đâu/gỡ lỗi ở đâu. Hy vọng với sự giúp đỡ của một cặp mắt khác, tôi có thể kết nối tất cả những thứ này.
lời chào.
Bạn không cần phải sử dụng cả hai >
Và<
Để có được kết quả bạn chỉ cần kiểm tra giờ
giá trị:
chọn DATE_FORMAT(signintime, '%b %d, %Y') Ngày,
count(session_id) là Tổng số,
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 08 THÌ 1 KHÁC 0 KẾT THÚC) '8AM-9AM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 09 THÌ 1 KHÁC 0 KẾT THÚC) '9AM-10AM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 10 THÌ 1 KHÁC 0 KẾT THÚC) '10AM-11AM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 11 THÌ 1 KHÁC 0 KẾT THÚC) '11AM-12PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 12 THÌ 1 KHÁC 0 KẾT THÚC) '12PM-1PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 13 THÌ 1 KHÁC 0 KẾT THÚC) '1PM-2PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 14 THÌ 1 KHÁC 0 KẾT THÚC) '2PM-3PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 15 THÌ 1 KHÁC 0 KẾT THÚC) '3PM-4PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 16 THÌ 1 KHÁC 0 KẾT THÚC) '4PM-5PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 17 THÌ 1 KHÁC 0 KẾT THÚC) '5PM-6PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 18 THÌ 1 KHÁC 0 KẾT THÚC) '6PM-7PM',
TỔNG(TRƯỜNG HỢP KHI GIỜ(thời gian đăng nhập) = 19 THÌ 1 KHÁC 0 KẾT THÚC) '7PM-8PM'
từ phiên
NƠI session.status = '3'
nhóm theo DATE_FORMAT(thời gian đăng nhập, '%b %d, %Y');
Nhìn thấySQL Fiddle với bản demo
Tôi là một lập trình viên xuất sắc, rất giỏi!