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

时间:2011-06-09 22:05:17

标签: sql

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

  • 我给出的这个场景的要求就在下面,它是BOLD和Italics。 我对如何编写给我们“%”的SQL查询的方案感到有些困惑 (百分比) -

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

我必须确保我们拥有这些%,以便我们可以在最新的SQL脚本中看到有意义的趋势。只看这些脚本中的记录计数就不那么有用了“

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

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

代码示例 -

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

目前,SQL查询获取总计数

SELECT COUNT(1)
FROM Table A;  

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

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

另外,我见过

SELECT COUNT(*)
FROM Table A; 

COUNT(*)给出包括空值的总记录数。

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

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

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

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

谢谢哈姆林。

“我们要求记录计数中的所有值都必须显示百分比值。 让我用上面的例子来解释 -  1)最初让我们拿一个表A和一个名为“B_id”的部分列。  因此,让我们使用COUNT(1)获取没有NULL的记录计数。 B_id的值为NULL。

因此,对于此字段,Total = 100

2)接下来,我们得到表的总记录数(所以,这里我们得到的所有东西)= 150

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

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

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

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

所以我需要一个

1 个答案:

答案 0 :(得分:0)

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

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 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语句将忽略它。我可能会错过你的观点,但我认为这不是你最关心的问题之一。另一方面,空值在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

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