Select в select

Тема в разделе "Базы данных", создана пользователем Denis5, 19 май 2010.

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

    Denis5 Постоялец

    Регистр.:
    2 сен 2008
    Сообщения:
    98
    Симпатии:
    23
    Нужно получить время загрузки страниц и кол-во страниц, которые загружаются медленнее.
    5сек - 200страниц
    10сек - 100страниц
    ....
    PHP:
    SELECT loadtimecountloadtime ), second.slower
    FROM 
    `table`,
    (
    SELECT countloadtime ) as slower
    FROM 
    `table`
    WHERE loadtime > {как сюда вставить loadtime из первого select?}
    ) as 
    second
    WHERE loadtime 
    0
    GROUP BY loadtime
    ORDER BY 
    `table`.`loadtimeASC
    Подскажите пожалуйста.
    А можно ли получить уже в процентах результат одним запросом?
    5сек - 10% от всех медленнее
    10сек - 2% от всех медленнее
    ...
     
  2. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Хм, довольно странная конструкция запроса :)
    Для первой задачи попробуй это, сортировка будет по времени загрузки (loadtime)
    Код:
    SELECT loadtime, 
    (
     SELECT count( loadtime ) AS counter 
     FROM `table` second
     WHERE second.loadtime > first.loadtime
     GROUP BY second.loadtime
    )
    AS counter
    FROM `table` first
    WHERE first.loadtime > 0
    GROUP BY first.loadtime ASC
    А для % лучше сложить все counter, а потом вычислять %, ну или делать вложеный запрос, но это увеличит нагрузку на MySQL
     
    Denis5 нравится это.
  3. vgvgvg

    vgvgvg Создатель

    Регистр.:
    16 июн 2010
    Сообщения:
    39
    Симпатии:
    1
    Или вы мудрите или я чего не понял.

    select a*5||'-'||(a+1)*5, b from (
    select int(loadtime/5) a,count(*) b
    from table
    group by int(loadtime/5)
    ) order by 1

    int надо заменить на функцию, которая отбрасывает дробную часть. Не помню как она в mysql называется.

     
Статус темы:
Закрыта.