如何从表中获取值大于40的列的计数

时间:2016-09-26 09:37:37

标签: sql oracle

我需要获取其值大于40的列数

示例:

id col_1 col_2 col_3

1   20     60  80

输出如此count=2

查询:

select count(columns) from table where id =1 and col_values >40;

如何编写查询来获取此信息请帮我写查询。

1 个答案:

答案 0 :(得分:3)

前提:

您的数据库未被规范化!请将其标准化。

解决方案:

试试这个:

SELECT SUM(
    CASE
        WHEN col1 >= 40 THEN 1 ELSE 0
    END +
    CASE
        WHEN col2 >= 40 THEN 1 ELSE 0
    END +
    CASE
        WHEN col3 >= 40 THEN 1 ELSE 0
    END)
FROM yourtable

使用此查询,您可以汇总所有列,并且您只能按行获得总和。

所以,如果你有这个结果集

id col_1 col_2 col_3

1   20     60  80
2   44     22  20

你将得到3(两个来自id为1的行,1个来自id为2的行)

修改

如果您只想获取一行的此信息,可以将查询与id = value集成(如您的问题所示),以便查询变为:

SELECT SUM(
    CASE
        WHEN col1 >= 40 THEN 1 ELSE 0
    END +
    CASE
        WHEN col2 >= 40 THEN 1 ELSE 0
    END +
    CASE
        WHEN col3 >= 40 THEN 1 ELSE 0
    END)
FROM yourtable
WHERE id = 1