如何使用计数"how many times a particular customer made inquiries"?
How to use count "how many times a particular customer made inquiries"?
我有这个 table 叫做“Anfrage”。这些是“Anfrage Table”中的列:
Anfrage Table
我想统计同一个客户咨询了多少次。所以我做了一个新的列“Menge_Anfrage”,意思是查询数量。结果应该是这样的:
Table Result
我尝试使用这个查询:
`SELECT DISTINCT Count(*)
FROM Anfrage
WHERE KundenNr = 1
) AS "Menge Anfrage",`
但它 returns 在“Menge Anfrage”列的所有行中都是“4”。有人可以告诉我正确的查询吗?我正在使用 SQL 工具 1,8 b38。非常感谢。
您似乎想统计 KundenNr 出现的次数。您的 table 不需要为此添加新列;你应该每次在查询中计算它:
SELECT
KundenNr,
Project,
COUNT(*) OVER(PARTITION BY KundenNr) as Menge_Anfrage
FROM
Anfrage
上面的查询等效于此查询,适用于不支持分析功能的数据库:
SELECT
a.KundenNr,
a.Project,
x.Menge_Anfrage
FROM
Anfrage a
INNER JOIN (SELECT KundenNr, COUNT(*) as Menge_Anfrage FROM Anfrage GROUP BY KundenNr) x
ON a.KundenNr = x.KundenNr
OVER(PARTITION BY KundenNr)
几乎完成了底部查询的 GROUP BY 子查询所做的工作;它根据不同的 KundenNr 值将数据集分成多个分区(组),并且 COUNT(*) 适用于分区,而不是整个数据集。研究并理解底部查询的工作原理,然后如果您记住分区 kundennr 和来自 table 的行之间的连接是自动的,那么您应该能够理解顶部的查询。
这里有另一种写法:
SELECT
a.KundenNr,
a.Project,
(SELECT COUNT(*) FROM Anfrage x WHERE x.KundenNr = a.KundenNr) as Menge_Anfrage
FROM
Anfrage a
您可以认为 oracle 会为输出中的每一行 运行 select 中显示的子查询。这在逻辑上等同于 运行 进行分组查询然后加入结果,或者创建分区哈希 table 将 KundenNr 映射到 Count 然后在准备结果时匹配它们
我有这个 table 叫做“Anfrage”。这些是“Anfrage Table”中的列:
Anfrage Table
我想统计同一个客户咨询了多少次。所以我做了一个新的列“Menge_Anfrage”,意思是查询数量。结果应该是这样的:
Table Result
我尝试使用这个查询:
`SELECT DISTINCT Count(*)
FROM Anfrage
WHERE KundenNr = 1
) AS "Menge Anfrage",`
但它 returns 在“Menge Anfrage”列的所有行中都是“4”。有人可以告诉我正确的查询吗?我正在使用 SQL 工具 1,8 b38。非常感谢。
您似乎想统计 KundenNr 出现的次数。您的 table 不需要为此添加新列;你应该每次在查询中计算它:
SELECT
KundenNr,
Project,
COUNT(*) OVER(PARTITION BY KundenNr) as Menge_Anfrage
FROM
Anfrage
上面的查询等效于此查询,适用于不支持分析功能的数据库:
SELECT
a.KundenNr,
a.Project,
x.Menge_Anfrage
FROM
Anfrage a
INNER JOIN (SELECT KundenNr, COUNT(*) as Menge_Anfrage FROM Anfrage GROUP BY KundenNr) x
ON a.KundenNr = x.KundenNr
OVER(PARTITION BY KundenNr)
几乎完成了底部查询的 GROUP BY 子查询所做的工作;它根据不同的 KundenNr 值将数据集分成多个分区(组),并且 COUNT(*) 适用于分区,而不是整个数据集。研究并理解底部查询的工作原理,然后如果您记住分区 kundennr 和来自 table 的行之间的连接是自动的,那么您应该能够理解顶部的查询。
这里有另一种写法:
SELECT
a.KundenNr,
a.Project,
(SELECT COUNT(*) FROM Anfrage x WHERE x.KundenNr = a.KundenNr) as Menge_Anfrage
FROM
Anfrage a
您可以认为 oracle 会为输出中的每一行 运行 select 中显示的子查询。这在逻辑上等同于 运行 进行分组查询然后加入结果,或者创建分区哈希 table 将 KundenNr 映射到 Count 然后在准备结果时匹配它们