我有一个具有PersonID和Code列的数据库。每个PersonID都有多个记录,每个记录都有一个代码。我想为每个PersonID计算出现的代码等于特定值的次数(例如,我希望代码等于“ R”的次数)。我想像这样退还它


  (((PersonID,Code_Count),(PersonID,Code_Count),(PersonID,
  Code_Count),...)


有人可以帮我实现这个吗?

谢谢。

编辑:我认为这是正确的,任何人都可以确认吗?
SELECT PersonID,COUNT(*) as count FROM people WHERE Code="R" GROUP BY PersonID;

编辑:它不包括零计数,但我在下面添加了一个答案,解决了该问题。

最佳答案

您快到了,但是对于任何不匹配的PersonID您都不会获得任何行。

我还没有测试过,但是也许是这样的:

SELECT
  `PersonID`,
  SUM(CASE WHEN `Code` = "R" THEN 1 ELSE 0 END) AS `count`
FROM `People`
GROUP BY `PersonID`


通过删除条件,您不会淘汰不匹配的人员,而是with the CASE you're still only counting matching rows

您应该检查这种幼稚的方法是否可以在您的索引范围内以预期的方式工作。

关于mysql - 计算MYSQL中某个值的出现次数并按ID分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55196676/

10-12 01:07