MySQL - ГРУППА и СЧЕТ по дате - PullRequest
11 голосов
/ 23 марта 2011

Я пытаюсь определить правильный синтаксис для получения нужного мне результата запроса.Вот сценарий:

Я проектирую приложение SaaS и у меня есть таблица с именем trip, например:

table.trips  
- trip_id (pk, ai)  
- client_id (fk)  
- shop_id (fk)
- trip_date (date)

Мне нужно, чтобы я мог получить количество поездок в таблице.за каждый день (по shop_id), а затем укажите количество TRIPS для trip_date, например:

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

Есть мысли о правильном синтаксисе?

Ответы [ 5 ]

23 голосов
/ 23 марта 2011
SELECT COUNT(*), trip_date , shop_id 
FROM trips 
GROUP BY trip_date , shop_id
3 голосов
/ 23 марта 2011

Как то так?

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

Я не парень из MySQL, но вам нужно будет использовать эквивалент T-SQL DatePart, где я использовал функцию DATE(), чтобы вырезать временную часть даты.

2 голосов
/ 23 марта 2011
select trip_date,count(*)
from trips
where shop_id=[the shop id]
group by trip_date

Это будет работать, если дата соответствует указанному вами формату.Если у него также есть время, тогда вы должны удалить время.

Также я не знаю, должен ли client_id присутствовать в этом запросе, если вам нужно сгруппировать его также, тогда вы должны положить его вместесторона trip_date для выбора или группы.Если вы хотите отфильтровать его, поместите его в где.

2 голосов
/ 23 марта 2011
SELECT shop_id, trip_date, count(trip_id)
FROM trips
GROUP BY shop_id, trip_date
1 голос
/ 15 мая 2018

Если в столбце даты также хранятся часы и минуты, вам нужно применить функцию подстроки к дате, чтобы иметь только часть гггг-мм-дд столбца даты, например:

SELECT COUNT(*), substring(trip_date,1,10)
FROM trips
GROUP BY substring(trip_date,1,10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...