我有一个Customer_Invoice
表,其中包含item_name
和Quantity
列。我想展示特定项目的前5个项目&物品数量按降序销售i-e如果物品A的数量已售出5且物品B的数量已售出3则物品A应位于顶部,而物品B将位于第二个号码。
| ITEMCODE | QUANTITY |
------------------------
| kb434 | 1 |
| A4tech123 | 4 |
| HDD40GB | 4 |
| Cell12 | 4 |
| Icd123 | 2 |
| A4tech123 | 6 |
在上图中,我想要{1}}在第1号A4tech123
上第2号,HDD40GB
第3号,依此类推。
答案 0 :(得分:8)
select top 5 Item_code, sum(Quantity)
from customer_invoice
group by Item_code
Order by sum(Quantity) desc
答案 1 :(得分:4)
select top 5 item_name , sum(Quantity) as Quantity from Customer_Invoice
group by item_name
ORDER BY sum(Quantity) DESC
答案 2 :(得分:0)
试试这个:
SELECT * FROM
(
SELECT ITEMCODE, SUM(QUANTITY) "TotalQty"
FROM MyTable
GROUP BY ITEMCODE
ORDER BY SUM(QUANTITY) DESC
, ITEMCODE ASC
) A
WHERE rownum <= 5;
在这里,您需要使用子查询,因为不使用子查询,它不会对所有ITEMCODE
like this进行分组(因为我们使用的是WHERE rownum <=5
)。所以你需要添加子查询。
答案 3 :(得分:0)
如果您使用postgres作为数据库,请使用以下查询:
select Item_code, Quantity from customer_invoice order by Quantity desc limit 5
OR
如果您使用任何其他数据库,请使用此查询:
select top 5 Item_code, Quantity from customer_invoice order by Quantity desc
我没有检查第二个,因为我正在使用Postgres DB,所以在使用确认查询之前
答案 4 :(得分:0)
Collections.unmodifiableSet(new HashSet<String>(fruits))
答案 5 :(得分:-3)
SELECT TOP 5 * FROM Customer_Invoice ORDER BY QUANTITY