Получить место в рейтинге пользователя на основе общего балла и времени

Поток на MSDN Social, Re: Named Pipes Provider, ошибка: 40 - Не удалось открыть соединение с SQL Server , имеет довольно приличный список возможных проблем которые связаны с вашей ошибкой. Возможно, вам захочется узнать, может ли кто-нибудь из вас быть тем, что вы испытываете.

  • Неправильная строка соединения, например, с использованием SqlExpress
  • Именованные каналы (NP) не была включена на экземпляре SQL
  • Удаленное соединение не было включено
  • Сервер не запущен или не указывает на реальный сервер в вашей строке подключения
  • Другие причины, такие как неправильные контекст безопасности
  • попробуйте выполнить основные тесты подключения между двумя машинами, над которыми вы работаете

0
задан Karl Hill 26 February 2019 в 01:04
поделиться

2 ответа

Из приведенных выше комментариев ясно, что общий балл и среднее время, затрачиваемое обратно пропорционально. То есть соотношение total_score и average_time_taken должно дать нам некоторое значение, которое мы теперь будем использовать для позиционирования или упорядочения наших записей. Следовательно, сначала я бы ввел в таблицу еще один столбец и рассчитал соотношение. Предполагая, что мы вызываем столбец ratio_average

, чтобы получить значения для нашего столбца, просто возьмите total_score / average_time_taken

, поэтому теперь при получении наших результатов из таблицы нам нужно будет только сделать следующее:

TotalScore::orderBy('ratio_average', 'desc')->get();

Выше теперь даст вам результаты в правильном порядке позиций с первой позиции

0
ответ дан Johhn 26 February 2019 в 01:04
поделиться

Вот как будет выглядеть MySQL-запрос:

SELECT 
    (
      SELECT COUNT(*)
      FROM TableScore X
      WHERE X.ts > T.ts OR (X.ts = T.ts AND X.avg_times_taken < T.avg_times_taken)
    ) + 1 AS position   
FROM TableScore T      
WHERE T.user_id = '7';

РАБОТА С DB-FIDDLE, ПРИМЕР ЗДЕСЬ

0
ответ дан PHPnoob 26 February 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: