计算数据库中列字段总数不止一次



我正在尝试运行查询以获取一个称为" ABC"的列的重复总数(不止一次出现)。我正在尝试但无法实现。

select COUNT(SELECT DISTINCT card_no, COUNT(*)  AS cnt )

请帮助,谢谢。

例如,以下是列:

cards
123,
456
,123

结果:

Count
1

AS 123出现不止一次。

您想要至少重复一次的列中不同值的数量,是吗?

SELECT COUNT(dupes)
FROM (SELECT card_no AS dupes, COUNT(*) cnt FROM table_name
  GROUP BY card_no HAVING COUNT(*) > 1) A

编辑说明。

内部查询SELECT card_no AS dupes, COUNT(*) cnt FROM table_name GROUP BY card_no HAVING COUNT(*) > 1仅返回表中重复的值。列上的别名是必要的,因为它是一个子查询。您可以独立于外部查询来运行此查询,以查看其返回的结果。

您必须在汇总其他字段时不想汇总的任何字段(例如执行记录计数),而HAVING零件是过滤出任何不筛选的任何内容重复(即,计数为1)。HAVING是在WHERE中无法使用的聚合字段上应用过滤的方法。

外部查询SELECT COUNT(dupes)...仅计算内部查询返回的card_no值的数量。由于这些分组,它给出了重复的不同值的数量。

A最后为子查询设置了一个别名,因此可以像查询其他地方一样引用它。这对于另一个查询的FROM子句中的任何子查询都是必需的。有效地,外部查询中的选择读取SELECT COUNT(A.dupes)...,并且没有别名A,就无法从dupes字段中参考从何处参考(即使在这种情况下是暗示)。

也值得注意的是,在查询中没有在其他任何地方使用该字段COUNT(*) cntSELECT。只要您仍然具有GROUP BYHAVING条款,它将有效地工作。

SELECT
card_no, COUNT(*) AS "Occurrences"
FROM
YourTable
GROUP BY card_no
HAVING 
COUNT(*) > 1

最新更新