【发布时间】:2020-10-23 14:44:50
【问题描述】:
我正在尝试从 MySQL / SQL 数据库中获取特定类型的计数。该表有一列记录是 ID,第二列是另一个参考 ID。一些参考 ID 是整数,一些在其中包含文本。类似这样:
ID | RefID
123 | 1234567
123 | 1234568
123 | 1234569
123 | ABC/US12/12345
123 | ABC/AA12/12345
123 | ABC/BB12/12345
如果数字是整数,它代表美国。 对于文本 ID,“ABC”部分始终相同,但“AA”和“BB”代表国家代码。有时是“美国”,例如“ABC/US12/12345”。
对于每个 ID,我想要一个唯一国家/地区的计数,以用于它们各自的参考 ID。我想这将使用DISTINCT RefID,看起来像这样:
SELECT ID, count(DISTINCT RefID)
FROM TABLE
GROUP BY ID;
除了简单的 count(DISTINCT RefID) 之外,我希望 DISTINCT 与任何整数 RefID 或 RefID 相关,SUBSTRING(RefID, 5, 2) = "US",否则 DISTINCT 应该是 DISTINCT(SUBSTRING(RefID, 5, 2)) 的 RefID。所以上面数据的计数是3。
谁能告诉我这种类型的函数被称为什么或如何完成这个?
【问题讨论】:
-
DISTINCT不是一个函数,它是一个 set quantifer。删除那些额外的括号以使代码更清晰,即简单地count(DISTINCT RefID)。 -
好的,很高兴知道这一点。我已经澄清了示例代码。