Максимальное значение SQL для указанного предела

Я создал два сдвоенных массива, один с арабскими числами, другой с римскими символами.

function convert(num) {

  var result = '';
  var rom = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I'];
  var ara = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];

Затем я добавил цикл, который сканирует римские элементы, добавив, что наибольший по-прежнему состоит из NUM для РЕЗУЛЬТАТОВ, тогда мы уменьшаем NUM той же суммы.

Это похоже на то, что мы отображаем часть NUM в римских числах, а затем уменьшаем ее на ту же сумму.

  for (var x = 0; x < rom.length; x++) {
    while (num >= ara[x]) {
      result += rom[x];
      num -= ara[x];
    }
  }
  return result;
}

2
задан Wintress 4 March 2019 в 09:40
поделиться

4 ответа

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

ЛЕГКИЙ МЕТОД

SELECT TOP 1 c.year 

FROM coach AS c INNER JOIN team AS t ON c.team = t.team AND c.year = t.year

WHERE t.worldcupwin = 'Y'

ORDER BY c.wins DESC;
0
ответ дан Jithin Joy 4 March 2019 в 09:40
поделиться

использовать row_number() оконную функцию

select a.coach,a.team,a.win,a.year from 

 (select c.*,t.*,
row_number()over(order by wins desc) rn 
from  coach c join team t on c.team=t.team
 where worldcupwin='Y'
 ) a where a.rn=1
0
ответ дан Zaynul Abadin Tuhin 4 March 2019 в 09:40
поделиться

В следующем запросе используется DISTINCT ON:

SELECT DISTINCT ON (year) c.year, wins, worldcupwin, c.team
FROM coach AS c
INNER JOIN team AS t ON c.team = t.team AND c.year = t.year 
WHERE c.year > 1999 
ORDER BY year, wins DESC

для возврата записей с наибольшим числом побед в год

year    wins    worldcupwin team
---------------------------------
2000    4       Y           a
2003    5       N           b

Фильтрация команд, которые не выиграть кубок мира:

SELECT year, team
FROM (
   SELECT DISTINCT ON (year) c.year, wins, worldcupwin, c.team
   FROM coach AS c
   INNER JOIN team AS t ON c.team = t.team AND c.year = t.year 
   WHERE c.year > 1999 
   ORDER BY year, wins DESC) AS t
WHERE t.worldcupwin = 'Y'       
ORDER BY year, wins DESC

дает ожидаемый результат:

year    team
-------------
2000    a

Демо здесь

0
ответ дан Giorgos Betsos 4 March 2019 в 09:40
поделиться

Вы можете использовать коррелированный подзапрос

DEMO

   SELECT c.year, c.team
      FROM coachs AS c inner join teams t on c.team = t.team and c.year=t.year
      WHERE c.year >= 1999 and exists (select 1 from coachs c1 where c.team=c1.team 
      having max(c1.wins)=c.wins) 

и t.worldcupwin = 'Y'

ВЫХОД:

year    team
2000    a 
0
ответ дан fa06 4 March 2019 в 09:40
поделиться
Другие вопросы по тегам:

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