Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL заявка за намиране на всички служители с n-та най-висока заплата

Попитахте какво изглежда като разумен въпрос. Има различни начини за правене на нещата в SQL и понякога някои методи са по-добри от други. Проблемът с класирането е само един от много, много примери. "Отговорът" на вашия въпрос е, че по принцип order by ще работи по-добре от group by в MySQL. Въпреки че дори това зависи от конкретните данни и това, което смятате за „по-добро“.

Конкретните проблеми с въпроса са, че имате три различни заявки, които връщат три различни неща.

Първият връща всички служители с "плътен ранг", който е един и същ. Тази терминология се използва нарочно, защото съответства на ANSI dense_rank() функция, която MySQL не поддържа. Така че, ако заплатите ви са 100, 100 и 10, той ще върне два реда с класиране 1 и един с класиране 2.

Вторият връща различни резултати, ако има равенства. Ако заплатите са 100, 100, 10, тази версия няма да върне редове с класиране 1, два реда с класиране 2 и един ред с класиране 3.

Третият връща съвсем различен набор от резултати, който представлява само заплатите и класирането на заплатите.

Коментарът ми беше насочен към изпробване на заявките за вашите данни. Всъщност трябва да решите какво всъщност искате, както от функционална, така и от гледна точка на производителността.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да свържа mysql с swift?

  2. Основни MySQL заявки

  3. Как да инсталирам MySQL клиент на командния ред на Mac?

  4. MyISAM срещу InnoDB

  5. Нормализирайте всички UTF8 символи в най-стандартен формат