Я понимаю, что это, вероятно, будет легким, но мой SQL является основным в лучшем случае
Позволяет говорят, что у меня есть таблица, содержащая список заказов, с item_id
будучи одним из столбцов. Я должен отобразиться 3 наименьшее количество (или 3 большинство) популярные заказы объекта.
Я знаю, что должен сгруппировать использование заказов item_id
и затем считайте их. Затем я должен отобразить нижнюю часть (или вершина) 3 в убывании (или возрастание) порядок. Я просто не совсем уверен, как создать запрос как этот.
В Sql Server:
SELECT TOP 3 item_id, COUNT(*) as itemcount
FROM table
GROUP BY item_id ORDER BY itemcount
И добавьте DESC к порядковому убыванию
Вы можете просто использовать «источник» в клиенте mysql:
source dumpfile.sql
Или предоставить непосредственно из командной строки:
mysql -u user -p password database < source dumpfile.sql
Это потому, что результатом mysqldump является только файл SQL, который можно запустить через mysql как обычно.
-121--1549188-Нет, но есть Объекты дерева AVL для Python (очень старые!) и (закрытый) проект на SourceForge - avl-trees для Python .
-121--929716-select item_id, count(*)
from table
group by item_id;
даст вам весь список.
Нижняя 3:
select item_id
from (
select item_id, count(*) as cnt
from table
group by item_id
order by cnt
) where rownum < 4;
Верхняя 3:
select item_id
from (
select item_id, count(*) as cnt
from table
group by item_id
order by cnt desc
) where rownum < 4;
ПРИМЕЧАНИЕ: этот sytnax предназначен для Oracle. Используйте LIMIT, если у вас есть MySQL или TOP, если у вас есть sql-сервер.
ORDER BY отсортирует результаты. Порядок возрастания по умолчанию, поэтому используйте desc, если вы хотите получить наибольший.
GROUP BY (при использовании с count (*)) подсчитывает группы похожих объектов
, где rownum < 4: Это оракулы для выполнения LIMIT. Он возвращает первые 3 строки выполненного запроса. Где предложения выполняются перед предложениями заказа, поэтому необходимо выполнять это как вложенный запрос.
Для SQL сервера:
select top 3 item_id, count(item_id)
from table
group by item_id
order by count(item_id) desc
даст вам 3 самых популярных item_id's
используя:
order by count(item_id)
даст вам 3 наименее популярных item_id's
В MySQL
:
SELECT item_id, COUNT(*) AS cnt
FROM orders
GROUP BY
item_id
ORDER BY
cnt DESC
LIMIT 3