首页 > 解决方案 > 按销售的产品实例数降序分组,然后在 SQL 中按产品名称的字符串长度排序

问题描述

我有一个有两列的表:product_idproduct_name. 每个product_id重复多次,每次出现等于一次销售。

我想计算product_ids 出现的次数,并将它们从最畅销到最少排序,然后我想按product_name字符串的长度对其进行排序。

现在这就是我现在所拥有的,我不确定它是否正确:

SELECT product_id, COUNT(*), LEN(product_name) AS NameLength 
FROM table
GROUP BY product_id 
ORDER BY COUNT(product_id) DESC, LEN(product_name);

标签: sql

解决方案


您不能在选择中添加 LEN(product_name) 而不在 GROUP BY 部分中添加相同的内容。您可以尝试以下脚本,该脚本将首先按产品的最大订单数排序结果,然后如果有多个具有相同计数的产品可用,则按产品名称的长度排序。

SELECT product_id,LEN(product_name), COUNT(*)
FROM table
GROUP BY product_id,LEN(product_name)
ORDER BY COUNT(product_id) DESC, LEN(product_name)

推荐阅读