我需要获取其值大于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;
如何编写查询来获取此信息请帮我写查询。
答案 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