例如,如何在表格中展示10种人口最多的产品?
我有一个销售表,例如包含20种啤酒,10种玉米片,5种花生,2种热狗和4种早餐的销售。
有没有办法自动计算并查看哪个最受欢迎,并按降序显示?
编辑:
我的表格如下
表名:销售
字段:
由于数量领域,一个销售记录可能算作一次以上的产品销售。
我还有一张来宾表,其中只有字段名称和国家/地区,并希望显示表格中排名前五的人口最多的国家。
答案 0 :(得分:2)
这对你有用吗?
select *
from(
select count(productID) AS productCount, productName
from products
group by productID) Q
order by Q.productCount desc;
这会对内部查询中的产品进行计数(不清楚您的表是否已存储计数,但这并不常见,所以我假设您没有),然后在外部查询中对它们进行排序。这也假设您的产品有一个productID字段。
<强>更新强>
如果您的表格实际跟踪销售额,您可以执行以下操作:
select *
from(
select sum(quantity) AS productCount, productName
from sales
group by productID) Q
order by Q.productCount desc;
与之前的产品非常相似,但您要从多个销售商品中获取产品的总和,而不是产品数量。
答案 1 :(得分:0)
是的;在不知道数据库结构的情况下,您希望利用SUM或COUNT聚合将相似项组合在一起,然后在ORDERBY子句中按聚合的降序排序。
答案 2 :(得分:0)
如果您的列中包含销售该商品的次数,则可以执行SELECT TOP 10
和ORDER BY NumSales
。如果没有,您必须先对该列进行计数。
所以,这样的事情(假设你已经存储了计数):
SELECT TOP 10 f.Name, f.Sales
FROM Food f
ORDER BY f.Sales DESC
否则,
SELECT TOP 10 COUNT(f.Name) as [Count], f.Name
FROM Food f
GROUP BY f.Name
ORDER BY [Count]
答案 3 :(得分:0)
SELECT [...] ORDER BY sales DESC;
答案 4 :(得分:0)
一旦我们知道所涉及的表格,它们之间的关系以及确定产品“人口众多”的标准,我们就会更容易提供查询。但问题的症结在于:
LIMIT
语法获取第一个/前10个记录:LIMIT 10
IE:
SELECT ...
FROM YOUR_TABLE
ORDER BY quantity DESC
LIMIT 10