Как получить лучшие элементы, суммирующие дубликаты в SQL? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь составить список лучших предметов в базе данных.Предмет лучше, если прибыль выше.Проблема в том, что предмет может иметь дубликаты, такие как прибыль 500 в 10 часов и прибыль 750 в 14 часов.

Мой текущий код будет показывать как попытки, так и php. Я фильтрую это.Таким образом, я получаю элемент A один раз, но не могу определить общую прибыль по элементу A.

Мой оператор SQL выглядит так: SELECT item FROM category WHERE endtime >=? ORDER BY profit DESC LIMIT 15
endtime - это штамп unixtime, поэтому он показывает элементы изна прошлой неделе.

И с помощью php я фильтрую, используя array_unique($items, SORT_REGULAR);

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

Итак, это: a 500, b 250, c 350, b 100, a 25, c 50 становится: a 525, c 400, b 350

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Этот запрос должен дать вам желаемый результат (без примеров данных трудно быть уверенным).В основном вам нужно использовать SUM для суммирования прибыли и GROUP BY item для получения сумм за каждый отдельный элемент.

SELECT item, SUM(profit) AS total_profit 
FROM category
WHERE endtime >=?
GROUP BY item
ORDER BY total_profit DESC
LIMIT 5
0 голосов
/ 04 января 2019

Если я правильно понял, у вас есть таблица, подобная этой:

item | profit
----------- 
  a  | 500
  b  | 250
  c  | 350 
  b  | 100
  a  | 25
  c  | 50 

, и вы хотите:

item | profit
----------- 
  a  | 525
  b  | 350
  c  | 400

Это может быть достигнуто довольно легко с помощью GROUP BY и SUM

SELECT item, sum(profit)
FROM category
WHERE endtime >=?
GROUP BY id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...