gpt4 book ai didi

sql - 为什么我的涉及除法和 COUNT 的查询结果总是 1?

转载 作者:行者123 更新时间:2023-11-29 13:21:09 25 4
gpt4 key购买 nike

由于文字数据非常庞大,所以我将其简化了一点,但一个非常简单的示例就足够了。我正在处理一个查询,由于数据量很大,我希望一次性进行一些聚合,而不是执行许多步骤。

我有两张 table

<<customers>>
id | first_name | last_name
1 | Reed | Richards
2 | Johnny | Storm
3 | Peter | Parker

<<purchases>>
id | cid | date
1 | 1 | 2017-01-09
2 | 2 | 2017-01-09
3 | 2 | 2017-01-09
4 | 3 | 2017-01-09

当我运行查询时

SELECT 
COUNT(c.id) as "Total Customers",
COUNT(p.id) as "Total Sales",
COUNT(c.id)/COUNT(p.id) as "Sales per customer"
FROM test_customers c
LEFT OUTER JOIN test_purchases p ON c.id = p.cid

我明白了

4 | 4 | 1

当我在寻找...

3 | 4 | 1.3333333...

这个例子非常简单,但实际情况要大得多。我确信有一种方法可以做到这一点,但我现在不确定那是什么。

最佳答案

您正在尝试计算不同的行,但没有使用 count(distinct ...)

SELECT 
COUNT(distinct c.id) as "Total Customers",
COUNT(distinct p.id) as "Total Sales",
COUNT(distinct c.id) * 1.00 / COUNT(distinct p.id) as "Sales per customer"
FROM test_customers c
LEFT OUTER JOIN test_purchases p ON c.id = p.cid

注意,性能不是很好

关于sql - 为什么我的涉及除法和 COUNT 的查询结果总是 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41552730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com