gpt4 book ai didi

mysql - Mysql中如何计算比率?

转载 作者:行者123 更新时间:2023-11-29 11:54:53 28 4
gpt4 key购买 nike

我有一个像这样的表 hw1:

+--------+--------+----------+
| budget | price | count(*) |
+--------+--------+----------+
| high | high | 9 |
| high | low | 13 |
| high | medium | 20 |
| low | high | 60 |
| low | low | 94 |
| low | medium | 162 |
| medium | high | 151 |
| medium | low | 228 |
| medium | medium | 355 |
+--------+--------+----------+

我想在右侧添加另一列,看起来像“count(*)/budget样本大小”

例如,对于第一行其中预算 = 高且价格 = 高,我们将得到一个按 9/42 计算的数字(42 是高预算样本大小 = [9 + 13 + 20])

我尝试了以下代码,但结果是null

select (select count(*) from hw1 where count(*) like 'a%') / 
(select count(*) from hw1 where budget like 'b%') from hw1;

我相信这并不难,但我无法得到结果。

最佳答案

您可以使用另一个查询来获取每个 budget 值的“预算样本大小”,然后使用该查询的结果作为行源。

(缺少表和示例数据的定义,我们只是猜测您将用于获取该数据的查询。)

  SELECT r.budget
, COUNT(*) AS budget_sample_size
FROM hw1 r
GROUP BY r.budget

我们希望查询返回的结果中每个 budget 值一行,例如

  budget  budget_sample_size
------ ------------------
high 42
low 316
medium 734

现在的技巧是使用该查询作为另一个查询中的行源。我们将该查询包装在括号中,并在另一个查询的 FROM 子句中引用它,就像它是一个表一样。举一个简单的例子...

SELECT s.budget
, s.budget_sample_size
FROM (
SELECT r.budget
, COUNT(*) AS budget_sample_size
FROM hw1 r
GROUP BY r.budget
) s

通过使用这样的查询作为行源,我们可以在外部查询中使用查询返回的值。像这样用作行源的查询称为“内联 View ”。在 MySQL 语言中,它被称为“派生表”。

该查询的示例如下:

 SELECT t.budget
, t.price
, COUNT(*)
, s.budget_sample_size
, COUNT(*)/s.budget_sample_size
FROM hw1 t
JOIN (
SELECT r.budget
, COUNT(*) AS budget_sample_size
FROM hw1 r
GROUP BY r.budget
) s
ON s.budget = t.budget
GROUP
BY t.budget
, t.price
<小时/>

注意:此示例查询依赖于 GROUP BY 行为的 MySQL 特定扩展。其他数据库会抛出错误(“SELECT 列表中的非聚合不在 GROUP BY 中”)。它只需要对查询进行一些小调整即可使其在其他数据库中工作......例如添加 MAX() 聚合函数...将 s.budget_sample_size 表达式替换为 MAX(s.budget_sample_size)

关于mysql - Mysql中如何计算比率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369581/

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