【问题标题】:MySQL problem to find % of house vs % of unitsMySQL问题查找房屋百分比与单位百分比
【发布时间】:2021-11-22 19:48:33
【问题描述】:

我有下面的属性表;

我正在尝试编写一个查询来选择列出的房屋百分比与列出的单元百分比,按郊区细分。要完成的百分比四舍五入。结果应该类似于

suburb houses_percent units_percent
vinespark 100 0
burswick 66.66 33.33
rockdale 33.33 66.66

我尝试了许多代码更改,但无法完成。

【问题讨论】:

  • 我已经删除了jquery标签,这个问题与jQuery无关
  • 1) 请定义应该如何计算这些百分比 2) 分享您的尝试。
  • 房屋百分比将是一个郊区的房屋数量除以总数(房屋+该郊区的单元)*100。单位百分比将是郊区的单位数除以总数(房屋+该郊区的单位)*100 这必须按每个郊区分组/列出

标签: mysql sql percentage


【解决方案1】:

您必须找到每个郊区的房屋和单元总数。

select count(\*) as total 
from Table1
group by suburb;

然后在查找每个郊区的房屋或单元数时将结果用作子查询。

这可能会给你一些帮助:

select suburb, type, count(\*)/
(select count(\*) as total 
 from Table1 as T1 
 where Table1.suburb = T1.suburb 
 group by suburb)
as "%"
from Table1 
group by type, suburb;

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • count(/*) 是什么意思?这可以在 mySQL 中使用吗?抱歉,我是 SQL 新手
  • 格式化代码时出现了一些问题。所以斜线星应该只是一颗星。 count(star) 表示全部计数
【解决方案2】:

我想通了。

选择郊区,
ROUND((100xCOUNT(CASE WHEN type="house" THEN 1 ELSE NULL END))/count(type)) AS house_percent,
ROUND((100xCOUNT(CASE WHEN type="unit" THEN 1 ELSE NULL END))/count(type)) AS units_percent
FROM 属性
按郊区分组
按郊区排序

感谢大家的帮助

【讨论】:

    【解决方案3】:

    通过使用 Case When

        Select suburb, 
        round(100*count(case when type = "House" Then 1 else null end)/Count(Type)), 
        round(100*count(case when type = "Unit" Then 1 else null end)/Count(Type)) 
        from sales 
        group by suburb
        order by suburb;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2012-09-25
      • 2020-04-15
      • 2016-12-30
      • 2021-05-07
      • 2020-11-22
      相关资源
      最近更新 更多