2011-03-23 32 views
10

İhtiyacım olan sorgu sonucunu almak için uygun sözdizimini anlamaya çalışıyorum.MySQL- GROUP ve COUNT tarihe göre

Ben bir SaaS uygulaması tasarlama ve bir tablo olarak adlandırılan geziler var am, şöyle: İşte senaryo

Ben her gün için tablodaki geziler sayısını elde edebilmek için gereken
table.trips 
- trip_id (pk, ai) 
- client_id (fk) 
- shop_id (fk) 
- trip_date (date) 

(shop_id tarafından) ve daha sonra benzeri trip_date başına TRIPS'in sayısını, teslim: doğru sözdizimi hakkında

DATE   | TRIP SUM 
-------------------------- 
01-01-2011 | 3 
01-02-2011 | 2 
01-03-2011 | 5 

Herhangi düşünceler?

+0

"Dükkan kimliğiyle" neyi kastediyorsunuz? Sonuç kümenizde 'shop_id 'yok. – Quassnoi

+0

trip_date, counts (trip_id) trips grubundan shop_id, trip_date; – edmz

cevap

19
SELECT COUNT(*), trip_date , shop_id 
FROM trips 
GROUP BY trip_date , shop_id 
+0

Ya WHERE'yi kaldırmanız veya WHERE koşuluna sahip olmanız gerekir. Olduğu gibi geçersiz bir SQL. –

+0

Damnit - yakalama için teşekkürler. – Duniyadnd

+0

Mükemmel :-) Yardımlarınız için teşekkürler. WHERE shop_id = # eklendi ve mükemmel çalıştı. Şerefe. – teustis

2
SELECT shop_id, trip_date, count(trip_id) 
FROM trips 
GROUP BY shop_id, trip_date 
+1

İds toplamının gösterilmesi beklenen sonucu vermeyecektir. Sayı koymalısın. –

+0

yazım hatası, sabit - teşekkürler. – manji

2
select trip_date,count(*) 
from trips 
where shop_id=[the shop id] 
group by trip_date 

Bu sürece tarih gösterdi biçimi olduğu gibi çalışacaktır. Eğer zamanı da varsa, zamanı kaldırmanız gerekir.

Ayrıca, client_id'in bu sorguda gelmesi gerekip gerekmediğini de bilmiyorum, eğer gruplamak zorundaysanız, o zaman bunu select veya group'da yan trip_date'e eklemeniz gerekir. Eğer filtrelemek istiyorsanız onu buraya yerleştirin.

3

Böyle bir şey mi var?

select 
    DATE(trip_date) as [DATE], 
    count(1) as [TRIP SUM] 
from 
    trips 
group by 
    DATE(trip_date), shop_id 

Ben mySQL adam değilim, ama ben bugüne saat bölümünü şerit amacıyla DATE() fonksiyonunu kullandığınız bir T-SQL DatePart eşdeğer kullanmak gerekecektir.