Turli xil ustunlardagi turli atributlarni hisoblovchi effektiv so'rovni yaratish

Turli ustunlardagi ba'zi atributlarga ega qatorli jadval bor. A ustunida 1 yoki 0 bo'lishi mumkin. B ustunida ``, null yoki qiymat bo'lishi mumkin.

Menga A ustuniga 1 bo'lgan satr sonini hisoblashni istayman, jadvaldagi satrlarni `` yoki` bo'sh yoki 'B' ustunidagi satr soni teng emas null ga teng emas.

Buni bitta so'rovga qo'yish mumkinmi yoki uchta turli so'rovlarni yozish kerakmi?

Mysql-dan foydalanayapman. Rahmat.

1

1 javoblar

Sizning B sharti baribir barcha qatorlarni hisoblaydi, shuning uchun siz uni bitta tekshiruv bilan qilishingiz mumkin.

SELECT COUNT(CASE WHEN A=1 THEN 'X' END),
       SUM(CASE WHEN B='' OR B IS NULL THEN 1 ELSE 0 END),
       SUM(CASE WHEN B='' OR B IS NULL THEN 0 ELSE 1 END)
FROM YourTable
1
qo'shib qo'ydi
Rahmat. Faqat birinchi satrda "X" 1 bo'lishi kerakmi?
qo'shib qo'ydi muallif Hard worker, manba
Martinga minnatdorman, tushunaman. Sizning so'rovingiz ishlaydi.
qo'shib qo'ydi muallif Hard worker, manba
@Hardworker - Yo'q. COUNT barcha NOT NULL qiymatlarini hisoblaydi, shuning uchun har qanday ixtiyoriy NOT NULL qiymati ishlaydi. Men noto'g'ri taassurot qoldirgan holda, qasddan 1dan foydalanib qoldim. SUM versiyasi 1 uchun talab qilinadi.
qo'shib qo'ydi muallif Martin Smith, manba