Выборка количества уникальных значений с условием

Тема в разделе "Базы данных", создана пользователем Горбушка, 5 июн 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.175
    Симпатии:
    2.195
    Код:
    CREATE TABLE IF NOT EXISTS `visit` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `page` int(3) NOT NULL,
      `sm` int(1) NOT NULL,
      `ip` varchar(15) NOT NULL,
      `date` int(8) NOT NULL,
      `time` int(20) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;
    page - номер страницы
    ip - ip пользователя
    date - дата просмотра в формате 20140605
    time - время просмотра в формате time()

    Вопрос:
    как 1 запросом выдрать количество уникальных просмотров по дням? Аналогично требуется выбрать не уникальные просмотры.
    Т.е. нужно:
    Страница 1 - 10 просмотров / 1 ip сегодня, 4 / 2 ip вчера
    Страница 2 - 1 просмотр / 1 ip сегодня, 2 / 2 ip вчера
    И т.д.

    p.s. сервер xeon x4, нагрузка пофигу. Количество записей в сутки около 20-40 тысяч.
    P.p.s. или ну его **х? Выбрать все значения за диапазон и пыхом считать?
     
    Последнее редактирование: 5 июн 2014
  2. Jedy

    Jedy Писатель

    Регистр.:
    11 янв 2013
    Сообщения:
    5
    Симпатии:
    0
    Уники
    SELECT COUNT(DISTINCT ip), date
    FROM visit
    GROUP BY date;

    Все
    SELECT COUNT(ip), date
    FROM visit
    GROUP BY date;
     
  3. BACZ

    BACZ

    Регистр.:
    18 июн 2008
    Сообщения:
    609
    Симпатии:
    379
    А сколько страниц? Условно 100 или условно миллион?

    У вас не учитываются уники на страницу.
     
  4. dronvnao

    dronvnao Писатель

    Регистр.:
    14 авг 2014
    Сообщения:
    4
    Симпатии:
    0
    Уникальные\не уникальные

    select page, date, count(distinct ip)
    from visit
    group by page, date

    select page, date, count(ip)
    from visit
    group by page, date
     
Статус темы:
Закрыта.