COUNTda qanday baho mavjud?

Menda ikkita qiymat (0 va 1) ko'rsatadigan ustun bor. Hammasini jadvaldan qanday tanlash mumkin, faqat qiymatni 1 bayroq ustunidan sanash mumkin?

SQL Server

1
Sizning savolingizga javob berish uchun namunaviy ma'lumotlarni va kutilgan natijalarni ko'rishga albatta yordam berishi mumkin. Balki, siz 1 ta bayroqning jami ro'yxatini jadvaldagi barcha yozuvlardan olishni xohlaysizmi? SELECT A. *, Sum (bayroq) orqali (null tomonidan ajratilgan) SumTotalOfFlag sifatida Jadval A
qo'shib qo'ydi muallif xQbert, manba
Sizning savolingizga javob berish uchun namunaviy ma'lumotlarni va kutilgan natijalarni ko'rishga albatta yordam berishi mumkin. Balki, siz 1 ta bayroqning jami ro'yxatini jadvaldagi barcha yozuvlardan olishni xohlaysizmi? SELECT A. *, Sum (bayroq) orqali (null tomonidan ajratilgan) SumTotalOfFlag sifatida Jadval A
qo'shib qo'ydi muallif xQbert, manba
COUNT (agar bayroq = 1 va undan keyin END 1) bo'lsa, bu ishlamaydi
qo'shib qo'ydi muallif Stephen, manba
COUNT (agar bayroq = 1 va undan keyin END 1) bo'lsa, bu ishlamaydi
qo'shib qo'ydi muallif Stephen, manba
Sizga qaytib kelishni xohlaysizmi? Faqat 1-raqamlar soni?
qo'shib qo'ydi muallif Kiplet Goodfriend, manba
Sizga qaytib kelishni xohlaysizmi? Faqat 1-raqamlar soni?
qo'shib qo'ydi muallif Kiplet Goodfriend, manba

12 javoblar

Agar siz barcha qiymatlarni qaytarish va umumiy hisobga ega bo'lishni istasangiz (mantiqiy turini ishlatsangiz) ustidan quyidagi kabi:

select 
    t.*
  , count(case when flag = 1 then 1 end) over(partition by 1) as flag_1_count
from t
1
qo'shib qo'ydi

Agar siz barcha qiymatlarni qaytarish va umumiy hisobga ega bo'lishni istasangiz (mantiqiy turini ishlatsangiz) ustidan quyidagi kabi:

select 
    t.*
  , count(case when flag = 1 then 1 end) over(partition by 1) as flag_1_count
from t
1
qo'shib qo'ydi

CASE ifodasi bilan quyidagi kabi COUNT kerak:

COUNT(CASE WHEN flag = 1 then 1 END)
1
qo'shib qo'ydi

CASE ifodasi bilan quyidagi kabi COUNT kerak:

COUNT(CASE WHEN flag = 1 then 1 END)
1
qo'shib qo'ydi

Err, oddiy tanlovni qanday bajarish kerakligini so'rayapsizmi yoki men nimanidir kamligim ... Shunga o'xshash?

SELECT *
FROM [YourTableName]
WHERE FlagColumnName = 1
0
qo'shib qo'ydi

Err, oddiy tanlovni qanday bajarish kerakligini so'rayapsizmi yoki men nimanidir kamligim ... Shunga o'xshash?

SELECT *
FROM [YourTableName]
WHERE FlagColumnName = 1
0
qo'shib qo'ydi

Buni qilish kerak

Select count(0) 
from YourTableName
where ValueField = 1 
0
qo'shib qo'ydi

Buni qilish kerak

Select count(0) 
from YourTableName
where ValueField = 1 
0
qo'shib qo'ydi

Savolni tushunib yetganimga ishonchim komil emas, lekin bunday narsa emas:

SELECT * FROM your_table WHERE flag = 1
0
qo'shib qo'ydi
Yoki siz hisoblashni xohlasangiz, COUNT (*) dan YOUR_table WHERE bayroq = 1dan SELECT
qo'shib qo'ydi muallif Rob W., manba

Savolni tushunib yetganimga ishonchim komil emas, lekin bunday narsa emas:

SELECT * FROM your_table WHERE flag = 1
0
qo'shib qo'ydi
Yoki siz hisoblashni xohlasangiz, COUNT (*) dan YOUR_table WHERE bayroq = 1dan SELECT
qo'shib qo'ydi muallif Rob W., manba

O'ylaymanki, shunday deyishingiz mumkin:

SELECT COUNT(*) FROM [YOUR_TABLE] WHERE [FLAGCOLUMN] = 1;
0
qo'shib qo'ydi

O'ylaymanki, shunday deyishingiz mumkin:

SELECT COUNT(*) FROM [YOUR_TABLE] WHERE [FLAGCOLUMN] = 1;
0
qo'shib qo'ydi