1

我对 SQL 很陌生,无法让 SQL 查询正常工作。

我有一个包含数字 1 到 4 的响应列表示例:

问题1包含数据Q1:1,2,1,3,4,1,2,3,4,2

我需要做的是计算有多少个 1 和 2,将它们加起来,然后取平均值。例如在上面的示例中,有 6 个 1 和 2 的总数并将其除以总数以获得平均值。6/10 = .6(天哪,我希望这是有道理的)

我一直在尝试这段代码,但它是将数字相加,然后除以总数。

Select avg(q1) as avg
From db
Where q1 between 1 and 2
And call = 55817

例如在上面的例子中它是这样做的:1+2+1+1+2+2=9/10 = .9当我再次需要它来“计算”有多少个 1 和 2 时。

4

2 回答 2

3

对于 SQLite 特定的解决方案,试试这个:

SELECT AVG(q1 IN (1, 2)) AS youravg
FROM db
WHERE call = 55817

在线查看它:sqlfiddle

对于更标准的 SQL 解决方案,您可能更喜欢这样:

SELECT AVG(CASE WHEN q1 IN (1, 2) THEN 1 ELSE 0 END) AS youravg
FROM db
WHERE call = 55817
于 2012-07-25T23:55:11.450 回答
0

为什么不使用 1 和 2 进行 SELECT 然后使用 COUNT 函数?

数数

于 2012-07-25T23:58:56.710 回答