Чтобы получить количество продуктов, исключая максимальное значение этого продукта в sql - PullRequest
0 голосов
/ 14 декабря 2018
   1.   Product A   7.5
   2.   Product A   7.3
   3.   Product A   7.4
   4.   Product B   6.2
   5.   Product B   6.5
   6.   Product B   6.01
   7.   Product c   2.4
   8.   Product c   2.0

За исключением строки максимального значения продукта A = 7,5, тогда оставшееся количество для этого продукта A будет равно 2. Так вот, мне нужно

Product A  2
Product B  2
Product C  1..

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Возможно, у вас есть дубликаты с одинаковым максимальным значением.Если так:

select t.product
from t join
     (select product, max(price) as maxprice
      from t
      group by product
     ) tt
     on t.product = tt.product
where t.price < t.maxprice
group by t.product;
0 голосов
/ 14 декабря 2018

Если не будет дубликатов для максимального значения, вы просто вычтите 1 из COUNT:

SELECT product, COUNT(*) - 1 AS counter FROM products GROUP BY product;

, и это в случае, если есть дубликаты, и вы хотите, чтобы они все были исключены:

SELECT p.product, COUNT(*) AS counter 
FROM products p 
WHERE p.value < (SELECT MAX(value) FROM products WHERE product = p.product) 
GROUP BY p.product;

или если вы хотите вернуть нули:

SELECT 
  p.product, 
  COUNT(*) - (
    SELECT COUNT(*) 
    FROM products 
    WHERE 
      product = p.product 
      AND 
      value = (
        SELECT MAX(value) FROM products WHERE product = p.product
      )
  ) AS counter 
FROM products p 
GROUP BY p.product;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...