mysql - CASE 内带有条件的 SELECT 计数

标签 mysql count case

我试图在满足条件时对表的某些行进行计数。下面是我正在尝试做的事情的示例。

SELECT (CASE
        WHEN COUNT(*)<9 WHERE (tb1.col IS NULL OR tb1.col=1) THEN 1
        WHEN COUNT(*)<9 WHERE tb1.col=2 THEN 2
        WHEN COUNT(*)<9 WHERE tb1.col=3 THEN 3
        WHEN COUNT(*)<9 WHERE tb1.col=4 THEN 4
        WHEN COUNT(*)<9 WHERE tb1.col=5 THEN 5
        WHEN COUNT(*)<9 WHERE tb1.col=6 THEN 6
    END)
WHERE tb1.id=X

我知道它并不完全像那样工作,但我想知道,因为我必须再制作 12 个“何时……那么”,是否还有其他方法可以做到这一点。基本上我正在尝试计算满足条件的行数并检查是否少于 9 行。再重复 17 次。

最佳答案

tb1.col 对数据进行分组并获取每组的计数。然后找到第一个小于 9 的值。

SELECT MIN(col) AS val
FROM (
    SELECT IFNULL(tb1.col, 1) AS col, COUNT(*) AS count
    FROM yourTable AS tb1
    WHERE tb1.id = X
    GROUP BY col
) x
WHERE count < 9

关于mysql - CASE 内带有条件的 SELECT 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46591416/

相关文章:

R:按类别计算唯一值

sql - Count 中的 LINQ Case 语句

c - 查找 C 中 N 个案例之间的偶数

sql - 使用CASE为SQLite中的COUNT语句设置条件

php - 最好的方法是:检查一个条目是否存在,是否不创建,是否更新了它?

mysql - 如何从列尾部合并两列?

PHP/SQL - 搜索数据库时忽略 HTML 标签

php - 如何限制表格中数值的小数位数?

r - 如何在r中按组计算字符串中的字符?

mysql - 统计一个mysql count的结果?