2015-07-25 2 views
-1

В настоящее время я пытаюсь выбрать наиболее общее значение моего стол похож на этомВозвращает наибольшее значение происходящего

SALES: 
----------------------------------- 
NAME | QUANTITY 
banana  8 
pizza  1 
banana  2 
pizza  5 
milk  2 
banana  1 
burger  4 
--------------------------------- 

Я попробовал этот запрос

SELECT `name`, COUNT(`name`) AS `value_occur` 
FROM `SALES` 
GROUP BY `name` 
ORDER BY `value_occur` DESC 
LIMIT 1; 

в результате:

banana 3 

но, что я хочу, это способ умножить его на количество.

+2

Какой продукт? [Изменить] ваш вопрос, чтобы включить тег для Microsoft SQL Server [тег: sql-server], [tag: mysql] или [tag: oracle]. –

+0

Как сказал C-Pound Guru, вы всегда должны указать, какой сервер вы используете. Это 'PostgreSQL' или' MySQL'? – Marcellinov

ответ

1

Вы можете создать запрос, как это:

SELECT name, (count(name)*sum(quantity)) AS TOTAL_QUANTITY 
FROM SALES 
ORDER BY TOTAL_QUANTITY DESC 
LIMIT 1 

я предполагаю, что вы хотите, общее количество каждого продукта, и вы хотите, чтобы выбрать наиболее рецидивирующий продукт.

(Попробуйте это w3c редактор и будет работать, там, кажется, какой-то вопрос с SQL сервером, который я буду исследовать как можно скорее)

+0

Этот запрос не будет работать, он даст вам такую ​​ошибку, как «Столбец« SALES.Name »недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. ' –

+0

Я пробовал это и не дал мне никакой ошибки ... не уверен, почему вы отказались .... – Gianmarco

+0

вы можете запустить тот же запрос и снова проверить? , если он не даст вам ошибку, то я удалю это мой друг .. –

0

Если вы хотите ответить, как banana 33 затем пойти ниже запроса

SELECT name, (COUNT(name)*SUM(Quantity)) AS value_occur 
FROM SALES 
GROUP BY name 
ORDER BY value_occur DESC 
LIMIT 1; 
1

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

SELECT name, SUM(quantity) AS sumq 
FROM SALES 
GROUP BY name 
ORDER BY sumq DESC 
LIMIT 1; 
Смежные вопросы