Khi tôi chạy câu lệnh SQL sau:SQL không phải là một chức năng nhóm đơn nhóm
SELECT MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
Nó trả về giá trị tổng tối đa tải bởi khách hàng, tuy nhiên nếu tôi cố gắng tìm ra số an sinh xã hội mà giá trị tối đa thuộc về bằng cách thêm vào báo cáo kết quả chọn:
SELECT SSN, MAX(SUM(TIME))
FROM downloads
GROUP BY SSN
tôi nhận được lỗi sau:
not a single-group group function
Tôi không hiểu tại sao nó lại ném lỗi này. Một tìm kiếm google đã đưa ra các hành động sau đây:
Thả một trong hai chức năng nhóm hoặc biểu thức cột riêng lẻ từ danh sách SELECT hoặc thêm một mệnh đề GROUP BY bao gồm tất cả biểu thức cột cá nhân được liệt kê
Từ những gì tôi nghĩ rằng đây đang nói - việc giảm chức năng nhóm làm cho tổng giá trị không hợp lệ - thả biểu thức cột riêng lẻ (SSN) sẽ chỉ cho tôi số tiền tối đa - không chắc chắn về phần thứ ba đó.
Có ai có thể hướng dẫn đúng hướng không?
-Tomek
EDIT: TIME trong cơ sở dữ liệu này đề cập đến số lần tải về
Tôi đang sử dụng oracle và không quen thuộc với việc nắm bắt các hàng cụ thể.Tuy nhiên điều gì sẽ xảy ra nếu có những khách hàng bị ràng buộc vì có số lượng tải xuống tối đa? – Tomek
Nếu có nhiều số tiền với cùng số tiền, về cơ bản nó sẽ là ngẫu nhiên mà bạn nhận được (Có thể có một đơn đặt hàng ở mức thấp nhưng tôi không biết và cũng không dựa vào nó). Bạn có thể thêm các mệnh đề bổ sung vào thứ tự bằng cách nếu bạn muốn chỉ định cách tự mình đặt hàng. Nếu bạn muốn có được tất cả những cái được gắn trước, tôi tin rằng bạn sẽ cần các truy vấn lồng nhau, một để có được thời gian tối đa sau đó một lần nữa để kéo lại tất cả những cái đáp ứng nó (Cái gì đó như "SELECT SSN, SUM (TIME) FROM downloads NHÓM THEO S SSN SNN S SUMN (THỜI GIAN) = (CHỌN MAX (SUM (THỜI GIAN)) TỪ lượt tải TÊN NHÓM THEO SSN)) ") – fyjham
PS: Không chắc chắn 100% có tồn tại trong Oracle không - ai đó có thể làm rõ điều đó. Hầu hết kinh nghiệm của tôi là TSQL. – fyjham