SQL-запрос , получение, кроме последних 10 продуктов с наименьшим номером продукта

#sql

#sql

Вопрос:

Я застрял на этом, я хотел бы получить количество всех продуктов, за исключением последних 10 продуктов с наименьшим номером продукта.

Я пробовал это, но я знаю, как проверить, правильный код или неправильный, может ли кто-нибудь подтвердить?

 SELECT P1.PRODNR FROM PRODUCT P1 WHERE 10 lt; (SELECT COUNT(*)  FROM PRODUCT P2  WHERE P1.PRODNR lt; P2.PRODNR)  

Ответ №1:

Вы можете сделать это с помощью CTE и row_number

 with n as (  select prodnr, Row_Number() over(order by prodnr) rn  from products ) select prodnr from n where rngt;10  

Ответ №2:

Subquery чтобы получить список низких чисел для исключения

 SELECT P1.PRODNR FROM PRODUCT P1 WHERE PRODNR not in (SELECT top 10 PRODNR  FROM PRODUCT P2  order by PRODNR) -- assuming product number is a number  

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

1. Это, скорее всего, вызовет ошибку, если подзапрос вернет более 1 строки, которая вам нужна max(prodnr) .

2. правда.. not in должно хватить

3. это дает мне ошибку. синтаксис в строке 4. например: это отлично подходит для поиска трех самых высоких номеров продуктов. ВЫБЕРИТЕ P1.PRODNR ИЗ ПРОДУКТА P1, ГДЕ 3 gt; (ВЫБЕРИТЕ КОЛИЧЕСТВО(*) ИЗ ПРОДУКТА P2, ГДЕ P1.PRODNR gt;

4. измените свою операцию, если хотите найти другое решение

5. значит, мой запрос выше (в основном вопросе) должен быть правильным?

Ответ №3:

Мне пришлось изменить вход оператора в подзапросе

 SELECT P1.PRODNR FROM PRODUCT P1 WHERE 25 lt;= (SELECT COUNT(*)  FROM PRODUCT P2  WHERE P1.PRODNR gt; P2.PRODNR)  

Ответ №4:

Вот еще один способ выполнить вашу задачу:

 SELECT P1.PRODNR FROM PRODUCT P1 WHERE P1.PRODNR lt;   (select min(prodnr) from   (SELECT top 10 PRODNR FROM PRODUCT P2   ORDER BY PRODNR DESC) P3  )  

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

1. топ-10 возвращающихся неупорядоченных списков

2. @RoMEoMusTDiE не имеет значения, заказаны они или нет. MIN() выберет самый низкий из них

3. если список-это 1-22 только ваш top 10 возвращенный random numbers т. е. 1,2,3,11,20,21,22,10,6,4 так каков ваш минимальный номер?

4. @RoMEoMusTDiE Я соответствующим образом обновил свой ответ. Спасибо