2010-06-16 15 views
14

मैं जानना चाहता हूं कि मैं उन सभी मानों को कैसे ढूंढ सकता हूं जो MySQL डेटाबेस में NULL हैं उदाहरण के लिए मैं उन सभी उपयोगकर्ताओं को प्रदर्शित करने का प्रयास कर रहा हूं जिनके पास अभी तक औसत नहीं है।MySQL में कुल मानों की गणना कैसे करें?

यहां MySQL कोड है।

SELECT COUNT(average) as num 
FROM users 
WHERE user_id = '$user_id' 
AND average IS_NULL 
+2

प्रतीक्षा करें, क्या आप उपयोगकर्ता या गणना दिखाने की कोशिश कर रहे हैं? आपका प्रश्न आपके नमूने से मेल नहीं खाता है। –

+0

आपकी गणना सही मायने रखती है। – abbr

उत्तर

12
SELECT 
    COUNT(*) as num 
FROM 
    users 
WHERE 
    user_id = '$user_id' AND 
    average IS NULL 
+0

"गिनती (कॉलम)" वास्तव में कॉलम के मान के साथ लाइन को गिनती नहीं है "शून्य" – andy

2

मैं कुछ mysql विशिष्ट लापता हो सकता है लेकिन इस एसक्यूएल सर्वर में

SELECT COUNT(*) as num 
FROM users 
WHERE user_id = '$user_id' 
AND average IS NULL 
8

भी काम करेगा, तो आप कर सकते हैं:

Select Count(*) - Count(Average) as NullAverages 
From Users 
Where user_id = '$user_id' 
+0

मुझे नहीं लगता कि MySQL – dplass

+1

में काम करता है मेरे लिए MySQL में ठीक काम करने लगता है, और * बहुत * तेज है 'मामले जब' दृष्टिकोण। – ChrisV

4

आप सही रास्ते पर हैं । 'IS_NULL' से '_' निकालें और 'COUNT (औसत)' को 'COUNT (1)' में बदलें और आपके पास यह होगा।

MYSQL में शून्य के साथ काम करने के बारे में अधिक जानकारी के लिए देखें http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html

है और शून्य के साथ काम करने के लिए विशेष रूप

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_is-null

30

देखना एक अधिक सामान्य संस्करण (कि जहां खंड पर निर्भर नहीं करता और इसलिए आपके समग्र परिणामों को सीमित करता है):

SELECT 
    SUM(CASE WHEN average IS NULL THEN 1 ELSE 0 END) As null_num, 
    SUM(CASE WHEN average IS NOT NULL THEN 1 ELSE 0 END) AS not_null_num 
FROM users 

यह बेहतर नहीं है तो विशिष्ट q यूरीज़ यहां अन्य उत्तरों द्वारा प्रस्तुत किया गया है, लेकिन इसका उपयोग ऐसी स्थितियों में किया जा सकता है जहां सीमित है जहां खंड अव्यवहारिक है (अन्य जानकारी की आवश्यकता होने के कारण) ...

+1

धन्यवाद - मैं पूरी तरह से 'केस कब' विकल्प के बारे में भूल गया था ... –

+1

MySQL में, यह इस विशेष उद्देश्य के लिए 'केस' का उपयोग करने के बजाय 'ISNULL()' फ़ंक्शन का उपयोग करने के लिए वाक्य रचनात्मक रूप से कहीं अधिक सरल है। – Air

+0

हो सकता है कि आप इस तरह के IF खंड का उपयोग कर सकें: चयन करें SUM (IF (IFNULL (औसत), 1, 0) AS null_num, SUM (IF (IFNULL (औसत), 0, 1) उपयोगकर्ताओं से नहीं – andy

1

थोड़ा देर हो चुकी है लेकिन आप इसे MySQL 5.0.51 में कर सकते हैं :

SELECT COUNT(*) AS total, COUNT(field1) AS notNullFields1 
FROM table 
GROUP BY field5, field6 

सम्मान।

+0

आधारित http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count पर – ATorras

संबंधित मुद्दे