2016-08-08 5 views
0
SELECT *, 
     DATE(date) AS post_day 
FROM notes 
WHERE MONTH(date) = '08' 
     AND userid = '2' 
     AND YEAR(date) = '2016' 
ORDER BY post_day DESC, 
      timestamp ASC 

В этом вопросе я группирую свои сообщения по дням.Рассчитать совокупность сумм по дням

То, с чем я борюсь, вычисляет общее количество слов всех заметок за каждый день. Существует столбец счетчика слов, который содержит количество слов для каждого сообщения. Можно ли рассчитать эту сумму в одном запросе или сделать это отдельно?

По столбцам таблицы:

NoteID UserID Date Note WordCount 
+1

Редактировать свой вопрос и предоставить образцы данных и желаемые результаты. –

ответ

0

Во-первых, не используйте select * с group by запроса. select * просто не имеет смысла с агрегацией. , , вам необходимо применить функции агрегации.

Я предполагаю, что вы хотите что-то вроде этого:

SELECT DATE(date) as post_day, SUM(WordCount) 
FROM notes 
WHERE MONTH(date)= '08' AND userid = '2' AND YEAR(date)= '2016' 
GROUP BY DATE(date) 
ORDER BY post_day DESC, timestamp ASC 
+0

Я также хочу вернуть заметки. Не только агрегация – user1829122

1
SELECT date, SUM(wordCount) AS monthWordCount 
    FROM Notes 
    WHERE userID = 2 
    AND MONTH(date) = '08' 
    AND YEAR(date) = '2016' 
    GROUP BY userID, date 

проверить эту demo, используя код выше.

Если вы хотите вернуть заметки, а также вы можете сделать подзапрос, как показано ниже:

SELECT noteID, userID, date, note, wordCount, 
    (SELECT SUM(wordCount) 
    FROM Notes 
    WHERE userID = a.userID 
    AND date = a.date 
    GROUP BY userID) AS dayTotalWordCount 
FROM Notes a 
WHERE a.userID = 102 
AND MONTH(date) = '08' 
AND YEAR(date) = '2016' 

Вот demo используя код выше.

Смежные вопросы