2009-08-21 18 views
11

Tamam, yapmaya çalıştığım şey, aynı tabloda farklı ölçütler (verimlilik) veya alt sorgular olmadan farklı ölçütlere göre farklı COUNT() ler gerçekleştirmesidir. bir görüşe dönüştürülebilir). Mümkün mü?mySQL: Birden çok COUNT() s farklı ölçütlere dayanarak

Örnek: bir tablonun bir tarih sütunu var - sorgu, sabit bir tarihten sonra & öncesinde satır sayısını sayabiliyor olmalıdır.

cevap

28

MySQL kullanıyorsunuz, böylece boolean ifadesinin false ve 1 için true olarak değerlendirdiği özelliğinden yararlanabilirsiniz. 1'lerin SUM() ifadesi, ifadenin doğru olduğu COUNT()'a eşittir.

SELECT SUM(date_column < '2009-08-21') AS prior_to_date, 
     SUM(date_column > '2009-08-21') AS after_date 
FROM MyTable; 

PS: bir boolean ifade bir boolean değil, bir 0 ya da 1 tam sayı verir yani SQL standart davranışını korumak veritabanının diğer markalar, bu çalışmayın.

+0

Güzel - bu harika çalışıyor. SQL sözdizimini kullanan diğer veritabanlarında, SUM içinde bir IF'nin 1 veya 0 değerini döndürdüğünü varsayarsak, koşulun da çalışması gerekir. – dborba

+1

Evet. Ama en taşınabilir olmak istiyorsanız 'CASE' ifadelerini kullanın. Standart SQL'de IF() yoktur. –

+0

Birden çok ve ayrı çalıştım. Ihtiyaç olan tümce ile ayrı bir seçim deyimi koydum, sonra mysql dizini kullanır, ancak birleştirildiğinde, bu dizini kullanmazsa bulundu. Açıklamalı kontrol edildi. –

İlgili konular