You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQL统计列值出现次数 同时保留对应唯一值列数据

问题原因

  • order是SQL的保留关键字,直接作为字段名使用会被SQL解析器识别为排序语法,必须加转义符才能正常识别为字段
  • 你写的A.0rder存在拼写错误,开头是数字0而非字母O,会被识别为不存在的字段
  • 部分对SQL语法校验严格的数据库(如BigQuery、Salesforce SOQL)会对非标准JOIN写法报错,用窗口函数可以完全规避JOIN写法,更简洁高效

解决方案1:修正原有JOIN写法

SELECT A.id, A.`order`, B.cnt
FROM Customers A
INNER JOIN (
    SELECT `order`, COUNT(`order`) AS cnt
    FROM Customers 
    GROUP BY `order`
) B ON A.`order` = B.`order`

注:如果你的数据库不支持反引号转义关键字,可以替换为对应数据库的转义符:SQL Server用[order],Oracle用"order"。

解决方案2:窗口函数写法(更推荐,无JOIN完全规避语法报错)

这种写法不需要额外关联子查询,直接按order字段分组统计同组总数,输出结果和你预期的完全一致:

SELECT 
  id,
  `order`,
  COUNT(*) OVER (PARTITION BY `order`) AS `count`
FROM Customers

内容的提问来源于stack exchange,提问作者Akeem Hinds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:15:03