Tôi muốn nhóm và đếm số lượng các mục trong một bảng đáp ứng tiêu chí colA <= x < colB
Làm cách nào để sử dụng SQL để nhóm và đếm số hàng có giá trị cho một cột là <= x và giá trị cho cột khác> x?
Giả sử tôi có bảng sau:
index Game MinAgeInclusive MaxAgeExclusive -------------------------------------------------------- 1 Candy Land 3 8 2 Checkers 5 255 3 Chess 12 255 4 Sorry! 6 12 5 Monopoly 10 30
(đây không phải là những gì tôi đang làm, nhưng nó tóm tắt đi rất nhiều những biến chứng khác với thiết lập của tôi)
Giả sử tôi muốn để có được một bảng mà nói với tôi bao nhiêu trò chơi là thích hợp cho các lứa tuổi khác nhau:
Age NumberOfAgeAppropriateGames ---------------------------------- 0 0 ... 3 1 4 1 5 2 6 3 7 3 8 2 9 2 10 3 ... 40 2
tôi chắc chắn có thể nhận được giá trị cho một tuổi duy nhất:
SELECT
COUNT(*)
FROM GameTable
WHERE MinAgeInclusive <= age AND age < MaxAgeExclusive
Và tôi biết làm thế nào để có được số lượng các mục mà có một trao MaxAgeExclusive
SELECT
MaxAgeExclusive, COUNT(*) AS GameCount
FROM GameTable
GROUP BY MaxAgeExclusive
nhưng tôi không thể khá hình làm thế nào để làm cả hai.
Vì ứng dụng thực tế của tôi đang thực hiện việc này trên một bảng với hàng triệu mục nhập và có thể phải xác định số lượng hàng nghìn giá trị x
, tôi hy vọng tôi có thể tối đa hóa hiệu suất bằng cách thực hiện toàn bộ điều đó trong một truy vấn .
Tôi biết rằng với ví dụ tôi đã đưa ra, điều này nghe có vẻ mơ hồ như một câu hỏi về bài tập về nhà; điều này có lẽ là vì tôi đã cố gắng tóm tắt tất cả các chi tiết của vấn đề thực tế của mình và tạo ra một vấn đề mới vẫn có một số ngữ cảnh/ý nghĩa ... –
Bạn đang sử dụng cơ sở dữ liệu nào? Và phiên bản nào? –
Vâng, khuôn khổ mà tôi đang xây dựng yêu cầu rằng nó có phần chung chung; Tôi tin rằng nó nhắm mục tiêu Microsoft SQL, MySQL và Access (!) –