2013-09-27 5 views
24

मैं इन प्रश्नों में कई स्थितियों के लिए:एकाधिक COUNT() एक क्वेरी (MySQL)

SELECT COUNT(*) FROM t_table WHERE color = 'YELLOW'; 
SELECT COUNT(*) FROM t_table WHERE color = 'BLUE'; 
SELECT COUNT(*) FROM t_table WHERE color = 'RED'; 

वहाँ किसी भी तरह से एक क्वेरी में ऐसे परिणामों के लिए है?

उत्तर

45
SELECT color, COUNT(*) FROM t_table GROUP BY color 
+1

यदि तालिका में अधिक रंग हैं, तो ऊपर दिए गए प्रश्न सभी रंगों को वापस लौटाते हैं, न केवल 3 चयनित – AdrianBR

+14

@AdrianBR: यह सचमुच सवाल उठा रहा है, और वास्तविक अंतर्निहित समस्या को देखने में विफल रहा है। – eggyal

+5

@eggyal 'चयन रंग, COUNT (*) t_table से रंग जहां ('पीला', 'नीला', 'लाल') रंग ' – josephdpurcell

8
SELECT 'yellow' as color ,COUNT(*) FROM t_table WHERE color = 'YELLOW' 
union 
SELECT 'blue' , COUNT(*) FROM t_table WHERE color = 'BLUE' 
union 
SELECT 'red',COUNT(*) FROM t_table WHERE color = 'RED'; 

या

select color, count(*) from table where color in ('red', 'blue', 'yellow') group by 1 
+2

द्वारा समूह आपने अपने अनुरोध के अनुसार एकमात्र गलत जवाब स्वीकार कर लिया है। आपका स्वीकृत उत्तर सभी रंगों को लौटाता है, न केवल आपके द्वारा चुने गए 3। – AdrianBR

31

आप परिणाम एक पंक्ति में होना चाहते हैं आप का उपयोग कर सकते हैं:

SELECT 
    SUM(IF(color = 'YELLOW', 1, 0)) AS YELLOW, 
    SUM(IF(color = 'BLUE', 1, 0)) AS BLUE, 
    SUM(IF(color = 'RED', 1, 0)) AS RED 
FROM t_table 

Working example

+4

या सिर्फ 'एसयूएम (रंग =' पीला ') 'आदि – eggyal

+1

@eggyal हां, लेकिन यह देखना मुश्किल है कि यहां क्या हो रहा है और आप' SUM (IF (color = 'YELLOW' जैसे वजन के साथ गिनने का चयन नहीं कर सकते हैं। , 0.75, 0)) '। – eisberg

+0

इस के लिए धन्यवाद। और वजन घटाने भी उपयोगी हो सकता है। – TrtG

0

आप इस सबक्वेरी उपयोग कर सकते हैं ।

SELECT(
    SELECT COUNT(*) FROM t_table WHERE color = 'YELLOW', 
    SELECT COUNT(*) FROM t_table WHERE color = 'BLUE', 
    SELECT COUNT(*) FROM t_table WHERE color = 'RED' 
); 
+1

पर आसान है ऐसा लगता है कि आपको कम से कम PostgreSQL में नेस्टेड SELECT स्टेटमेंट के आसपास कोष्ठक की आवश्यकता है। – Wolverine

+1

क्या आप वाकई एक प्रश्न पूछ रहे हैं? !! –

+0

हाँ @ अलीश्राफात – Faisal

0

यह मेरा जवाब है: एस्टे ejemplo एसक्यूएल इंडिका ला cantidad डे संयुक्त राष्ट्र ग्रुपो y सुमा लॉस encontrado चोर एस वाई एन पोर separado। से अधिक जानकारी के लिए साइन अप नहीं किया गया है। Bendito समुद्र इज़राइल।

SELECT sm_med_t_servicios.id as identidad, count(sm_adm_t_admision.id) as cantidad , 
SUM(IF(sm_adm_t_admision.atendido = 'S', 1, 0)) AS atendidos, 
SUM(IF(sm_adm_t_admision.atendido = 'N', 1, 0)) AS por_ver 

FROM sm_med_t_servicios 
LEFT JOIN sm_adm_t_admision ON sm_med_t_servicios.id = sm_adm_t_admision.sm_med_t_servicios_id 
WHERE sm_med_t_servicios.m_empresas_id = '2' 
GROUP BY sm_med_t_servicios.id 

मुझे आशा है कि यह आपकी मदद करेगा।

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