SQL select 多个值的 count()
SQL select count() of multiple values
不是 -- 我在 MS Access 中工作,所以 SQL 是有限的。
在我的table中,有两个相关字段。 F1 有一个公司名称,F2 有 8 个文本值之一,这里称为 1-8。
给定一个公司名称,我需要找出每个特定文本值有多少。
例如,给定名称 'company1,' 在 F1 中可能有 50 条带有 'company1' 的记录。在 F2 中,这 50 条记录可能只有文本值 1、3 和 4。
在一个查询(或多个查询)中,我需要
1) 检索 F1 = 'company1'
的所有记录
2) 找到 F2 的所有不同值,其中 F1 = 'company1.' 例如,对于此条件,F2 = 2、3、4 或 7
3) 找出 F2 中每个不同的值重复了多少次。续在上面的例子中,可能有十个 2、十个 3、十个 4 和二十个 7。
流程如下所示 --
用户输入'company1.'查询returns
Value | Count
2 | 10
3 | 10
4 | 10
7 | 20
我的总体想法是使用一个带有子查询的查询生成每个 F2 值的列表,其中 F1 = company1,然后第二个子查询生成该列表中的所有不同值。然后,不知何故,我需要在第一个子查询中搜索第二个查询中每个值的重复次数。
这是一些测试代码。我这里的问题是它 returns [Significance Level:] in (etc...) 的计数,因为它检查该值是否在该子查询中,而不是在该子查询中对每个结果执行主查询。
SELECT count(*)
FROM (
SELECT [Significance Level:]
FROM all_data_tester WHERE
[Manufacturer Audited:] = 'Airbus Space & Defense')
WHERE [Significance Level:] in (
SELECT distinct [Significance Level:]
FROM all_data_tester
WHERE [Manufacturer Audited:] = 'Airbus Space & Defense'
);
抱歉,如果这令人困惑,很难解释。我可以澄清任何事情
使用 GROUP BY 子句
SELECT [Significance Level:], Count(*) As Cnt
FROM all_data_tester
WHERE [Manufacturer Audited:] = 'Airbus Space & Defense'
GROUP BY [Significance Level:]
ORDER BY [Significance Level:]
这会为每个显着性水平创建一行,并带有相应的计数。
您还可以通过
获得每个制造商的计数
SELECT [Manufacturer Audited:], [Significance Level:], Count(*) As Cnt
FROM all_data_tester
GROUP BY [Manufacturer Audited:], [Significance Level:]
ORDER BY [Manufacturer Audited:], [Significance Level:]
这会为每个制造商和具有相应计数的显着性水平创建一行。
不是 -- 我在 MS Access 中工作,所以 SQL 是有限的。
在我的table中,有两个相关字段。 F1 有一个公司名称,F2 有 8 个文本值之一,这里称为 1-8。
给定一个公司名称,我需要找出每个特定文本值有多少。
例如,给定名称 'company1,' 在 F1 中可能有 50 条带有 'company1' 的记录。在 F2 中,这 50 条记录可能只有文本值 1、3 和 4。
在一个查询(或多个查询)中,我需要
1) 检索 F1 = 'company1'
的所有记录2) 找到 F2 的所有不同值,其中 F1 = 'company1.' 例如,对于此条件,F2 = 2、3、4 或 7
3) 找出 F2 中每个不同的值重复了多少次。续在上面的例子中,可能有十个 2、十个 3、十个 4 和二十个 7。
流程如下所示 --
用户输入'company1.'查询returns
Value | Count
2 | 10
3 | 10
4 | 10
7 | 20
我的总体想法是使用一个带有子查询的查询生成每个 F2 值的列表,其中 F1 = company1,然后第二个子查询生成该列表中的所有不同值。然后,不知何故,我需要在第一个子查询中搜索第二个查询中每个值的重复次数。
这是一些测试代码。我这里的问题是它 returns [Significance Level:] in (etc...) 的计数,因为它检查该值是否在该子查询中,而不是在该子查询中对每个结果执行主查询。
SELECT count(*)
FROM (
SELECT [Significance Level:]
FROM all_data_tester WHERE
[Manufacturer Audited:] = 'Airbus Space & Defense')
WHERE [Significance Level:] in (
SELECT distinct [Significance Level:]
FROM all_data_tester
WHERE [Manufacturer Audited:] = 'Airbus Space & Defense'
);
抱歉,如果这令人困惑,很难解释。我可以澄清任何事情
使用 GROUP BY 子句
SELECT [Significance Level:], Count(*) As Cnt
FROM all_data_tester
WHERE [Manufacturer Audited:] = 'Airbus Space & Defense'
GROUP BY [Significance Level:]
ORDER BY [Significance Level:]
这会为每个显着性水平创建一行,并带有相应的计数。
您还可以通过
获得每个制造商的计数SELECT [Manufacturer Audited:], [Significance Level:], Count(*) As Cnt
FROM all_data_tester
GROUP BY [Manufacturer Audited:], [Significance Level:]
ORDER BY [Manufacturer Audited:], [Significance Level:]
这会为每个制造商和具有相应计数的显着性水平创建一行。