powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с sql запросом
8 сообщений из 8, страница 1 из 1
Помогите с sql запросом
    #39071510
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, думаю, что запрос простой, но что то не идет, подсобите плиз.
Вопщем структура такая(я выбросил все ненужные поля такие как news_text)
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE `news` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL,
  `author_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8



Выбираем сколько авторов опубликовали новости с группировкой по дате:
Код: sql
1.
2.
3.
4.
5.
6.
select 
    date(created_at), count(distinct author_id)
from
    news
group by date(created_at)
order by date(created_at) desc



Ребят а как составить запрос, чтобы выводило кол-во авторов, которые опубликовали только 1 новость(с группировкой по дате)?

Скажем если пользователь Вася опубликовал за сегодня уже 2 новости, а пользователь Петя только одну, то учитываем ТОЛЬКО Петю. А в другой колонке вывести наоборот Васю, который написал 2 и более новостей.

Понимаю, что нужно наверно как то добавлять подзапрос. Но не получается вот что. Если в подзапросе я группирую по author_id то как скрестить с датой?

У меня должна получится таблица вида:
created_at | count_one_post_author | count_more_post_author

Натолкните плиз, чот никак не могу допедрить.
...
Рейтинг: 0 / 0
Помогите с sql запросом
    #39071534
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
HAVING COUNT(author_id)=1
...
Рейтинг: 0 / 0
Помогите с sql запросом
    #39071537
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как добавить вторую колонку? Ведь я же не смогу в одном запросе сделать 2 хевинга.
...
Рейтинг: 0 / 0
Помогите с sql запросом
    #39071545
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina вы наверно немножко неверно поняли задачу. Юзеров может быть 180 человек, которые опубликовали за сегодня только 1 новость, и 540 которые 2 и более. Хевинг тут наверно не очень поможет, он же просто по агрегатной функции сделает фильтр, а count никак не покажет 1.
...
Рейтинг: 0 / 0
Помогите с sql запросом
    #39071597
araman,

во вложенном запросе делаешь group by + having, чтобы выбрать авторов с одним постом, во внешнем запросе считаешь кол-во выбранных записей.
как вариант - [not] exists -подзапрос в WHERE для идентификации однопостовых юзеров с последующим count-ом без group by
...
Рейтинг: 0 / 0
Помогите с sql запросом
    #39071599
Добрый Э - Эх,

а ещё, некоторые СУБД поддерживают вложенные агрегаты. умеет ли с ними работать MySQL - проверить лень.
...
Рейтинг: 0 / 0
Помогите с sql запросом
    #39071626
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
SELECT created_date, SUM(cnt=1), SUM(cnt>1)
FROM
  (SELECT date(created_at) created_date, COUNT(*) cnt
   FROM news
   GROUP BY created_date, author_id) t
GROUP BY created_date DESC
...
Рейтинг: 0 / 0
Помогите с sql запросом
    #39071635
araman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft спасибо, все чотко!

Блин как же все просто оказалось)) Ребят, и последний вопрос, если данных свыше 100к то почему то жестко тормозит сортировка по дате. С чем может быть связано? Если не указывать сортировку то более менее быстро работает все.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с sql запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]