У меня есть таблица с ~ 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 и строгий, но этот пример очищается.) Я попробовал несколько вариантов и примеров, которые я нашел при поиске здесь, но я делаю что-то неправильно. пожалуйста, помогите.
Изменить
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
.
SELECT `type_num`, count(*) as cnt FROM `productstable` GROUP BY `type_num` ORDER BY cnt DESC LIMIT 100
но что вы подразумеваете под запятой после + alias?