mysql - 如何对唯一查询进行复杂计数
问题描述
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
and 看起来像这样:
SELECT ID, count(DISTINCT RefID)
FROM TABLE
GROUP BY ID;
除了count(DISTINCT RefID)
我希望 DISTINCT 与SUBSTRING(RefID, 5, 2)
=“US” 的任何整数 RefID 或 RefID 相关,否则DISTINCT
应该与 RefID 相关,而不是简单地DISTINCT(SUBSTRING(RefID, 5, 2))
。所以上面数据的计数是3
.
谁能给我一个关于这种类型的函数被称为什么或如何完成这个的开始?
解决方案
你似乎想要这样的东西:
SELECT ID,
COUNT(DISTINCT CASE WHEN RefID REGEXP '^[0-9]+$' THEN 'US'
WHEN RefID LIKE '%/US%' THEN 'US'
ELSE RefID
END)
FROM CONTINUITYCHILD_P
GROUP BY ID;
如果您需要从其他RefID
s 中提取国家/地区,则可能需要额外的逻辑。
推荐阅读
- javascript - 按钮 onClick 在我的反应组件中不起作用
- reactjs - 动态地将姓名和电子邮件添加到状态
- python-3.x - 使用 countvectorizer 和余弦距离匹配来自不同集合的文档
- java - 如果给定的字母1不存在,Java如何打印-1
- python - 在谷歌学者中缺少引用的 25 位作者列表中循环
- python - 如何在 python 中运行 Powershell 脚本
- django - 如何在 Django 中处理不同模型的文件上传?
- powershell - 收到“必须调用 Connect-AzureAD”,即使我之前运行过它
- tensorflow - Tensorflow 模块中的 Keras 层
- react-native - 我收到此错误无法在 React Native Android 上调用 RNFSManager.readFile null。上传视频时