在桌子上展示人口最多的产品?

时间:2010-07-08 19:45:09

标签: sql mysql

例如,如何在表格中展示10种人口最多的产品?

我有一个销售表,例如包含20种啤酒,10种玉米片,5种花生,2种热狗和4种早餐的销售。

有没有办法自动计算并查看哪个最受欢迎,并按降序显示?

编辑:

我的表格如下

表名:销售

字段:

  • product(varchar)
  • quantity(int)
  • 费用(十进制)
  • saledate(日期)

由于数量领域,一个销售记录可能算作一次以上的产品销售。

我还有一张来宾表,其中只有字段名称和国家/地区,并希望显示表格中排名前五的人口最多的国家。

5 个答案:

答案 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 10ORDER 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)

一旦我们知道所涉及的表格,它们之间的关系以及确定产品“人口众多”的标准,我们就会更容易提供查询。但问题的症结在于:

  1. 您需要按照决定人口众多权重的任何顺序排序,DESCending ......
  2. 使用LIMIT语法获取第一个/前10个记录:LIMIT 10
  3. IE:

      SELECT ...
        FROM YOUR_TABLE
    ORDER BY quantity DESC
       LIMIT 10