#mysql
#mysql
Вопрос:
Краткий вопрос о том, как это сделать, я не уверен, как это будет работать. По сути, у меня есть таблица с тысячами строк в день, и я хочу сгруппировать их по дате для каждой строки. Эта часть проста, но затем я хочу знать, входит ли экземпляр в эту группу, например, я хочу знать, есть ли Пол в эту дату.
Date Name
------------------
| 4/8/2011 | Jack |
| 4/8/2011 | Jack |
| 4/8/2011 | Jack |
| 4/8/2011 | Jack |
| 4/8/2011 | Jack |
| 4/8/2011 | Paul |
У меня есть SELECT count(*) as Total /*not sure what goes here*/ WHERE date = '2011-04-08' GROUP BY date
Комментарии:
1. Похоже, вы предпочли бы знать, какие группы присутствовали на определенную дату. Семантика, но это важно для запроса.
2. Что ж, Пол определенно ответит на запрос, мне просто нужно знать, входит ли он в каждую группу или нет.
3. Тогда в настоящее время ответ от taylonr создаст такой отчет. Я не уверен, что это то, чего вы хотите, но я делаю предположения.
Ответ №1:
Select date, Count(*)
, Max( Case When Name = 'Paul' Then 1 Else 0 End ) As HasPaul
From MyTable
Where date = '2011-04-08'
Group By date
Другой подход, при котором вы просто смотрите, равен ли PaulCount > 0:
Select date
, Sum( Case When Name = 'Jack' Then 1 Else 0 End ) As JackCount
, Sum( Case When Name = 'Paul' Then 1 Else 0 End ) As PaulCount
, Count(*) As OverallCount
From MyTable
Where date = '2011-04-08'
Group By date
Ответ №2:
SELECT COUNT(*), Name FROM <TableName> Where date = <date desired> GROUP BY date, Name
Это будет группа по дате, а затем по человеку, так что будет группа 4/8/2011 для Джека и одна для Пола.