Perl & MySQL - Как получить топ 100 наиболее часто используемых полей (содержащих число) из столбца в таблице?

0

У меня есть таблица с ~ 100 000 строк.

Я пытаюсь распечатать, чтобы отобразить наиболее часто используемый "type_num" из столбца.

Итак, если 2362 появляется в столбце type_num 1000 раз, это самый используемый тип, а 1234 используется 987 раз и т.д., я получаю список сокращений для большинства частотных type_num.

Не повезло. Вот моя попытка новичка:

 my $mostused = DBI->connect("$thedb","$user","$password") or die "Connection Error: $DBI::errstr\n";

  my $getfreq = $mostused->prepare(qq{SELECT `type_num` count(*) FROM `productstable` GROUP BY `type_num` ORDER BY count(*) DESC LIMIT 10}); ##just tested with 10

    $getfreq->execute() or die "Connection Error: $DBI::errstr\n";

    while(my ($type_num) = $getfreq->fetchrow_array()) {
    print qq~$type_num<br />~;
    }

    $getfreq->finish(); #not sure if correct
    $mostused->disconnect;  #not sure if correct

Ошибка подключения. У вас есть ошибка в ваш синтаксис SQL; проверьте руководство, которое соответствует вашему серверу MySQL версии для правильного синтаксиса для использования near 'count (*) FROM `productstable` GROUP BY `type_id` ORDER BY count (*) DESC LIMIT 10 'в строке 1

Тип_num - это число от 1 до 5 цифр. (Использование DBI и строгий, но этот пример очищается.) Я попробовал несколько вариантов и примеров, которые я нашел при поиске здесь, но я делаю что-то неправильно. пожалуйста, помогите.

  • 3
    Вы пропустили запятую?
  • 0
    @Timmy: это ответ, а не комментарий :)
Показать ещё 2 комментария
Теги:
frequency

1 ответ

2
Лучший ответ

Изменить

SELECT `type_num` count(*) 
FROM `productstable` GROUP BY `type_num` 
ORDER BY count(*) DESC LIMIT 100

Для

SELECT `type_num`, count(*) as cnt 
FROM `productstable` GROUP BY `type_num` 
ORDER BY cnt DESC LIMIT 100

Запятая после type_num + alias для count(*) для повторного использования в ORDER BY.

  • 0
    Пытаясь SELECT `type_num`, count(*) as cnt FROM `productstable` GROUP BY `type_num` ORDER BY cnt DESC LIMIT 100 но что вы подразумеваете под запятой после + alias?
  • 0
    Работал! Есть ли способ показать количество?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню