75278350@qq.com 发表于 2024-11-12 16:16:33

以下代码不能正常运行

大神,请帮忙看看,以下代码不能正常运行,感谢!


select

a.客户ID
b.累计个数
from
(SELECT 客户ID,COUNT(客户ID) 重复个数
FROM
`销售订制单(云南)`
GROUP BY 客户ID
HAVING COUNT(客户ID) > 1
ORDER BY 客户ID)a,
(SELECT 客户ID,COUNT(客户ID) 累计个数
FROM
`销售订制单(云南)`
GROUP BY 客户ID
ORDER BY 客户ID)b
where
a.客户ID=b.客户ID

FishC 发表于 2024-11-12 16:16:46

看起来您的 SQL 查询有一些语法错误,导致无法正常执行。这里有几点需要修正:

1. 缺少逗号 (`,`) 分隔 `SELECT` 子句中的列。
2. 缺少关键字避免混淆,如 `AS` 为子查询命名。
3. 您可以考虑使用 JOIN 来使逻辑更清晰。

以下是修正后的 SQL 查询:

SELECT
    a.客户ID,
    b.累计个数
FROM
    (SELECT 客户ID, COUNT(客户ID) AS 重复个数
   FROM `销售订制单(云南)`
   GROUP BY 客户ID
   HAVING COUNT(客户ID) > 1) a
JOIN
    (SELECT 客户ID, COUNT(客户ID) AS 累计个数
   FROM `销售订制单(云南)`
   GROUP BY 客户ID) b
ON
    a.客户ID = b.客户ID
ORDER BY
    a.客户ID;

请确保在执行查询前,表 `销售订制单(云南)` 的名称和列名是正确的,这样才能运行成功。这样改动之后,应该能够正常运行。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

75278350@qq.com 发表于 2024-11-12 16:31:54

这个代码为什么不能取数到占比后5名呢?不加LIMIT5 就能正常运行,加了就不可以。

SELECT
   商品名称,SUM(实收金额) AS 总金额
FROM
`销售订制单(云南)`
GROUP BY 商品名称
ORDER BY SUM(实收金额) ASC
LIMIT5

FishC 发表于 2024-11-12 16:32:05

75278350@qq.com 发表于 2024-11-12 16:31
这个代码为什么不能取数到占比后5名呢?

SELECT
...

根据您提供的 SQL 查询,发现了一个小错误。您在使用 `LIMIT` 子句时,没有在它的后面加上空格,而且缺少一个空间来分隔 `LIMIT` 和数字 `5`。此外,大多数数据库管理系统在 `LIMIT` 和数字之间需要空格。

以下是修正后的 SQL 查询:

SELECT
    商品名称,
    SUM(实收金额) AS 总金额
FROM
    `销售订制单(云南)`
GROUP BY
    商品名称
ORDER BY
    总金额 ASC
LIMIT 5;

更改要点:
1. `LIMIT` 后需要加一个空格才可正常使用。
2. 确认列名(例如 `实收金额` 和 `商品名称`)以及表名 `销售订制单(云南)` 是否正确。
3. 如果数据库返回没有足够的记录,请确保 `销售订制单(云南)` 表中有足够的数据以便进行排序和限制操作。

这样修改后,查询将返回实收金额总计排在后5名的商品名称及其总金额。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 以下代码不能正常运行