获取总行数和不同行数之间差异的查询

30

我刚开始学习SQL,无法编写正确的SQL语句。 有一个名为STATION的表格,其中包含ID、城市名称、州份名称、北纬和西经等五个字段的数据。

+-------------+------------+
| Field       |   Type     |
+-------------+------------+
| ID          | INTEGER    |
| CITY        | VARCHAR(21)|
| STATE       | VARCHAR(2) |
| LAT_N       | NUMERIC    |
| LONG_W      | NUMERIC    |
+-------------+------------+

NUM 表示城市总数,NUMunique 表示不同城市的数量,请编写一个查询语句打印出 NUM - NUMunique 的值。

我尝试过:

select (count(CITY)- distinct count(CITY)) from STATION; 

1
是的,我做过类似这样的事情,选择(count(CITY)-distinct count(CITY)) from STATION; - prabhakar Reddy G
1
我已经将你的尝试编辑到了你的帖子中。我希望这样你可以避免被踩。我建议你进一步编辑你的帖子,展示你在尝试后得到了什么。祝好运! - S.L. Barth
你使用哪种数据库管理系统?Postgres?Oracle? - user330315
27
这是一个在 Hacker Rank 上的问题 :P - Adrian Lynch
https://www.hackerrank.com/challenges/weather-observation-station-4无论如何感谢您:D - Menuka Ishan
4个回答

75

你可以在count中使用select distinct,并尝试这种方式

select  (count(CITY)- count(distinct CITY)) from STATION; 

1
我在找到这个答案之前尝试了这里列出的两种查询结构... https://dev59.com/2GEi5IYBdhLWcg3wD4cu#21701121 我正在努力学习不要让事情变得太难。 - kpie
我不理解你的评论,请尽量解释得更清楚一些。你找到的答案是针对从不同表中计算差异的,而这是用于在同一表中计算差异的...请让我知道你需要什么。 - ScaisEdge
为什么要加括号?我认为没有必要。 - jdhao
@jdhao 正确的,括号是不必要的。 - ScaisEdge

6
SELECT COUNT(*) - COUNT(DISTINCT CITY) FROM STATION

4
您可以编写多个查询来回答这个问题,比如:我将问题视为我们有一个名为STATION的表,并且我们现在需要找到该表中城市条目的总数与不同城市条目数量之间的差异。
查询1:
select (count(city)-count(distinct city)) from station;

查询2:

select ((select count(city) as ans1 from station)-(select count(distinct city)
       as ans2 from station));

查询3:

select (( select count(city) from station )-( select count(distinct city) from station ))
       as ans;

所有上述提到的查询都可以正常工作。


0

SQL服务器:

    SELECT ABS((SELECT COUNT(CITY) FROM STATION)-(SELECT COUNT(DISTINCT CITY) FROM STATION)) AS diff_num

为什么要使用ABS()函数?总计数总是大于或等于不同计数。它总是正数。看起来是一个多余的处理调用。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接