繁体   English   中英

需要帮助理解场景和编写 SQL

[英]Need help in understanding Scenario and writing SQL

非常感谢。 我需要为所有记录和记录计数添加特定功能。 我已经把它贴在这里-

  • 给我的这个场景的要求就在下面,它用粗体和斜体表示。 我对如何编写 SQL 查询的场景感到有些困惑,它给了我们“%”(百分比)-

获取所有客户端的最新脚本,并根据这些脚本顶部的说明为所有记录计数添加百分比(当 % 至少为 1% 时)。
请务必使用每次测试时的总记录数来获得您的百分比。 对于所有最新的时间段,我们都需要这些 %。

我必须确保我们拥有这些百分比,以便我们可以在最新的 SQL 脚本中看到有意义的趋势。 仅查看这些脚本中的记录数并没有那么有用”

我的理解-我得到的是我需要为记录计数添加 %,但它令人困惑(当 % 至少为 1% 时) 那么,如果任何字段为 BLANK/NULL 或空 =-我将如何处理它?

在编写 SQL 查询时需要您的帮助,以通过采用 BLANK/NULL 或空的条件来添加 %

代码示例-

如果大于 0%,则给出总记录的百分比,并将日期放在每个查询的计数旁边

目前,SQL 查询获得总数

SELECT COUNT(1)
FROM Table A;  

我是 SQL 的新手。所以,如果我理解错误,请纠正我。

使用 Count(1) 时,过滤所有 NULL 值

另外,我见过

SELECT COUNT(*)
FROM Table A; 

COUNT(*) 给出总记录数,包括 null 值。

现在,为每个字段执行下一个 SQL 查询-

--Count members 
SELECT COUNT(DISTINCT B_id)
FROM enrollment;

因此,现在我已经编写了一个 SQL 查询来计算 % 并包含每个记录计数的“%”。 我想它将表格的总计数除以每列计数。

嗨,非常感谢您格式化我的查询。我正在逐渐尝试学习格式化。 我没有收到任何关于我的查询的建议/答案,我一直在等待您就如何正确获取 SQL 查询提供意见。 我很抱歉让它变得大胆,我只是想强调一下。 再次请求帮助**强文本**

谢谢哈姆林。

" 我们要求记录计数中的所有值也必须显示百分比值。让我用上面的例子来解释一下 - 1) 最初让我们取一个表 A 和一个名为“B_id”的特定列。所以让我们得到没有 NULL 的记录计数我使用了 COUNT(1)。B_id 的值是 NULL。

所以,对于这个字段,Total = 100

2)接下来,我们得到表的总记录数(所以,这里我们得到了一切)= 150

现在,如果我们看到上述要求-

“所以,我希望我现在解释得更好。最后,我需要每个列的所有记录计数的百分比,例如 B_id、SSN 等

**另外,当它出现 0.76% 时必须注意一个场景 -> 然后我需要将它四舍五入到 1% 所以,SQL 查询应该计算 %

(当 % 至少为 1% 时)。**

所以我需要一个

我明白为什么人们没有回应。 这个问题不清楚,根据我读了两三遍的结果,要求也不是很清楚。 无论如何,我可以尝试帮助解决一些问题:

a) 在您的示例中, count(*)count(1)之间很可能没有区别,除非您使用的是非标准数据库。 那是:

select count(1) from tableA

select count(*) from tableA

返回完全相同的答案。 两者都忽略不存在的记录。 试试看,你会看到的。

b)要获得百分比,您必须运行两个查询是正确的。 这是一种可能的方法。 首先,获取总数,如下所示:

select count(*) from TableA

然后,获取每个项目的计数,并将其除以总数。

select item, count(*) from TableA group by item

将它们组合成一个更大的 select 语句,可能是这样的:

select x.item, round (x.nbr / (select count(*) from TableA), 2) * 100 as Pct
from (
  select item, count(*) as nbr
  from TableA 
  group by item
  ) x

c) 您使用的是哪个 SQL? 语法变化很大,值得您花时间告诉我们。

d) 您对空值的关注是不必要的。 通常,如果一条记录不存在,SQL 语句将忽略它。 我可能会错过你的观点,但我认为这不会是你最关心的问题之一。 另一方面,null 值在 SQL 中是特殊的,因为它们不为零并且空值不等于任何值。 Null 甚至不等于 null。 如果上面代码中的 null 值有问题,您可能必须这样做:

select x.item, round (x.nbr / (select count(*) from TableA), 2) * 100 as Pct
from (
  select item, count(*) as nbr
  from TableA 
  where item is not null
  group by item
  ) x

希望这可以帮助。 它可能不是您正在寻找的答案,但我认为它可能会让您开始更好地提出问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM