SQL 列中最常见的 10 个值 - LINQ to SQL



假设我有一个名为 details 的表,其中包含这些列:

product id = int
product price = float
products' category = nvarchar(50)

此表没有主键(或外键,如果很重要)。

我想执行一个查询,

该查询按降序返回一个字符串列表,其中包含 10 个最常见的产品类别(产品所属的类别最多)。

如何执行此查询?

你可以尝试这样的事情:

var tenMostFrequentCategories = products.GroupBy(product=>product.Category)
                                        .OrderByDescending(grp=>grp.Count())
                                        .Select(grp=>grp.Key)
                                        .ToList();

我假设products是您的数据上下文类。

这是 SQL -

Select top 10 [Category], count(distinct productID) as NumProducts
from details
group by [category]
order by count(distinct productID) desc

group by将按类别对产品进行计数,然后top 10仅返回十个最多。 如果第 10 名有并列,它只会选择一个 - 如果您需要它来返回两个,请告诉我。

最新更新