python - Python3 Sqlite3:如何计算重复项但从中省略子字符串
问题描述
我有一个表,其中包含一个名为Patient
如下所示的列:
Patient
---------
Perez, MD
Perez, MD
Perez, MD
Perez
Perez
Ayoub, MD
Ayoub
.
.
等等 ....
我添加了这个查询
query = "SELECT Patient, COUNT(*) FROM Table GROUP BY Patient ORDER BY COUNT(*) DESC"
返回此结果:
[('Perez, MD', 3), ('Perez', 2), ('Ayoub, MD', 1), ('Ayoub', 1), ......]
但我想要得到这个结果的正确方法?
[('Perez, MD', 5), ('Ayoub, MD', 2), ......]
或这个:
[('Perez', 5), ('Ayoub', 2), ......]
解决方案
检查患者姓名是否包含,
以及是否提取左侧部分以在 GROUP BY 子句中使用:
SELECT
CASE
WHEN INSTR(Patient, ',') = 0 THEN Patient
ELSE SUBSTR(Patient, 1, INSTR(Patient, ',') - 1)
END Name,
COUNT(*) counter
FROM tablename
GROUP BY Name
ORDER BY COUNT(*) DESC
或删除任何出现的', MD'
:
SELECT
REPLACE(Patient, ', MD', '') Name,
COUNT(*) counter
FROM tablename
GROUP BY Name
ORDER BY COUNT(*) DESC;
请参阅演示。
结果:
| Name | counter |
| ----- | ------- |
| Perez | 5 |
| Ayoub | 2 |
推荐阅读
- webpack - 将 source-map 设置为 webpack 的 devtool 是否会增加生产中的构建大小?
- oracle - 程序中的参数列表
- c++ - C ++如何删除向量中的节点
- oracle - xsd 格式数字,小数点后 5 位
- python - 如何在while循环内的列表中用新项目替换旧项目
- stm32 - I2c通信stm32f3我该如何解决?
- javascript - 模态的谷歌地图只显示灰色,双击后显示
- java - 我无法实现 OnTouchListener 来拖动弹出窗口
- css - 如何阻止文本跳下它自己的行
- javascript - Bootstrap 4 置顶更改导航栏颜色