1 Câu hỏi: Một cách tốt hơn để nhóm và đếm nhiều cột SQL

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM
I have a survey table that shows the answers that people have taken once 
a month when they enter a contest. I'm trying to find a better way to 
have the sum of  people who answer "Just Me ,My Spuse/Partner" and 
another sum of people who people who answer  Children, 0-5, 6-12,13-17

This is the table called "Survey" that is provided:
User    JustMe      Children 0-5      Children 6-12    Myspouse/partner
  5      N              N               N                  N                           
  5      N              N               N                  N
  4      N              N               N                  N
  4      N              N               N                  N
 24      N              N               N                  N
 24      N              N               N                  N
 12      N              N               N                  N
 12     Just Me         N               N              Myspousepartner           
 46     Just Me         N        Children 6-12 years   Mypousepartner
 46     Just Me         N        Children 6-12 years   Mypousepartner

Tôi chỉ hy vọng có bảng trông như thế này

Tôi muốn bảng của mình phản ánh tổng số nhóm tuổi của trẻ em và justme /đối tác

I hope my output will be like this:
Children    JustMe/Partner
4045         1200 


  * I tried this code:
    SELECT 
    Children_13_17_years,Children_6_12_years,
    TotalSubjects= Count(*) Over (partition by Children_13_17_years),
    TotalSub= Count(*) Over (partition by Children_6_12_years)
    
0
  1. Tại sao bạn không thể thực hiện SUM(CASE WHEN answer in (children answers) THEN 1 ELSE 0 END) as Children , SUM(CASE WHEN answer in (Just me / Spouse) THEN 1 ELSE 0 END) as JustMe/Partner
    2019-05-08 16: 10: 45Z
  2. Vui lòng thêm tập kết quả mong đợi của bạn.
    2019-05-08 16: 19: 08Z
  3. @ mkRabbani Tôi muốn bảng của mình trông giống như thế này JustMe /Partner 4045 1200
    2019-05-08 16: 34: 28Z
  4. @ WEI_DBA Tôi đã thử phương pháp đó nhưng tôi không nhận được số đếm. tất cả các giá trị là 0, đó là lý do tại sao tôi sử dụng phân vùng trên và tôi cũng đã sử dụng số lượng chọn (trẻ em 6-12,0-5,12-17)
    2019-05-08 16: 37: 34Z
  5. Bạn có thể đăng câu truy vấn mà bạn đã thử không?
    2019-05-08 16: 53: 23Z
1 Câu trả lời                              1                         

Thử chọn tổng dựa trên báo cáo trường hợp. Nếu câu lệnh tình huống được đáp ứng, tổng được tăng thêm 1.

SELECT 
   SUM(CASE WHEN [Children 0-5] IS NOT NULL OR [Children 6-12] IS NOT NULL OR [Children 13-17] IS NOT NULL THEN 1 ELSE 0 END) as '[Children]',
   SUM(CASE WHEN [JustMe] IS NOT NULL OR [Myspouse/partner] IS NOT NULL THEN 1 ELSE 0 END) as '[JustMe/Partner]'
FROM [TableName]

** Bạn có thể phải thay đổi tên cột, bí danh và tên bảng trong ngoặc vuông. Bạn cũng có thể cần phải thay đổi các báo cáo trường hợp thành col != 'N' nếu bạn có ký tự N trong cơ sở dữ liệu của bạn thay vì null.

    
1
2019-05-08 17: 04: 43Z
  1. Tôi có ký tự N trong cơ sở dữ liệu và khi tôi thử sử dụng truy vấn này CHỌN SUM (CASE KHI [Children_0_5_years] col! = 'N' HOẶC [Children_6_12_years] col! = 'N' HOẶC [Children_13_17_years] col! = 'N' THEN 1 ELSE 0 END) là [Trẻ em], SUM (CASE KHI [Just_Me] col! = 'N' HOẶC [My_spousepartner] col! ELSE 0 END) với tư cách là [JustMe /Đối tác] TỪ [2019_Audience_Report_Activity_101] Tôi đã nhận được câu trả lời này Một biểu thức của loại không phải boolean được chỉ định trong ngữ cảnh được mong đợi, gần 'col'.
    2019-05-08 17: 42: 47Z
  2. @ Caesco [Children_0_5_years] col nên được thay thế bằng bất cứ thứ gì bạn có tên cột. Bạn không cần từ col. Làm điều này cho tất cả các cột trong báo cáo trường hợp
    2019-05-08 17: 56: 01Z
  3. ah ok. Lần này truy vấn hoạt động. Cảm ơn @dvo
    2019-05-08 18: 24: 15Z
  4. @ Caesco rất vui khi được giúp đỡ
    2019-05-08 18: 24: 29Z
nguồn đặt đây