Получение ошибки запроса mysql Top 20

#mysql

#mysql

Вопрос:

Пытаюсь получить: 20 лучших PI, у которых наибольшее общее количество наград, вместе с университетами, с которыми они связаны.

Mysql: SELECT award, pi, org FROM tbl WHERE groupby(award) LIMIT 20

Таблица:
Таблица

Похоже, ей не нравится моя группа by. Что здесь происходит не так?

Комментарии:

1. Вам нужно что-то агрегировать, если вы используете groupby dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

2. Помогите с моим вопросом, пожалуйста.

3. Я даже не слышал об этой groupby функции; что она делает? (Отличной от GROUP BY предложения, то есть.)

Ответ №1:

Вам нужно что-то сгруппировать, вот что вы пытаетесь сделать:

 SELECT distinct award, pi, org FROM tbl LIMIT 20; 
  

Ответ №2:

Вы не можете включать столбцы в группу по запросу, которые не являются совокупным столбцом (т. Е. count) или не являются частью группировки — это должно сработать:

 SELECT count(*) as ArwardCount, pi
FROM tbl 
GROUP BY pi
ORDER BY ArwardCount desc
LIMIT 0, 20;
  

Комментарии:

1. gaah, я думаю, я слишком долго застрял с SQL Server;-(

Ответ №3:

С

 SELECT award, pi, org FROM tbl WHERE groupby(award) LIMIT 20
  

Вы бы получили SQL Error (1305): FUNCTION xxx.groupby does not exist

Вместо этого вам нужно приведенное ниже, предполагая, что pi один является уникальным, а org находится в той же таблице (денормализованной)

 SELECT pi, org, count(award) awardcount
FROM tbl
GROUP BY pi, org
ORDER BY awardcount DESC
LIMIT 20;