2017-02-04 9 views
0

У меня возникли проблемы
Я считаю, что мне нужно будет использовать COUNT; однако я теряюсь относительно того, как бы я сравнивал строку с каждой строкой в ​​одном столбце, а затем подсчитывал, сколько строк меньше/дешевле, чем соответствующая строка. Заранее спасибо!

Вот официальная проблема, которую я пытаюсь решить:
«Использование схемы выборки, написать SQL заявление, которое будет возвращать все продукты в таблице Products и подсчета, как и многие другие продукты дешевле, чем изделия цена."SQL Newbie: как сравнить все строки в столбце, чтобы отобразить, сколько строк «дешевле/меньше» соответствующей строки?

Image example of solution

Image of all tables relative to the question


Мой код до сих пор ...

SELECT 
product_id, 
product_name, 
product_price, 
CASE WHEN product_price >???? 
END AS products_cheaper_count 
FROM [Products] 

ответ

0

Вы правы, вам нужно использовать COUNT во внутреннем SELECT запросе, чтобы получить счетчик все продукты дешевле, чем текущие, например:

SELECT p.product_id, p.product_name, p.product_price, 
(SELECT COUNT(*) FROM products WHERE product_price < p.product_price) AS products_cheaper_count 
FROM products; 
0

Представьте себе, что вы используете следующий код

declare @price float(24) = 7.50 
select count(*) 
    from Products sq 
    where sq.product_price < @price 

Полученный граф будет 2, который мы знаем, истинно, например, вы показали нам. Однако это делается с фиксированным значением для @price, и мы хотим, чтобы он изменился для каждой записи в таблице. Поэтому мы просто расширяем эту идею и используем коррелированный подзапрос

select product_id, product_name, product_price, 
     (select count(*) 
      from Products sq 
      where sq.product_price < pro.product_price 
     ) as products_cheaper_count 
    from Products pro 

Надеюсь, это поможет!

0
SELECT p.product_id, p.product_name, p.product_price, 
    (SELECT COUNT(*) FROM products pc WHERE pc.product_price < p.product_price) AS products_cheaper_count 
    FROM products p 
+0

Пробуйте последний sql! –

 Смежные вопросы

  • Нет связанных вопросов^_^