【问题标题】:How to count unique records and get number of these uniques in table using SQL?如何使用 SQL 计算唯一记录并获取表中这些唯一记录的数量?
【发布时间】:2010-09-19 05:37:28
【问题描述】:

想象一下我有这样的桌子:

id:Product:shop_id

1:篮球:41

2:足球:41

3:火箭:45

4:汽车:86

5:平面:86

现在,这是一个大型互联网商城的例子,其中有商店向一位顾客销售,因此顾客可以从每家商店中选择更多的产品并在一个篮子中购买。

但是,我不确定是否有任何 SQL 语法可以让我简单地获取唯一的 shop_ids 和客户购物篮中这些商店产品的总数。所以我会得到类似的东西:

Shop 41 有 2 件产品

购买 45 个产品

店铺 86 两款产品

我可以进行 SQL 查询来遍历表以创建某种 ['shop_id']['number_of_products'] 数组变量,该变量将存储所有产品的 shop_id,然后“使它们唯一” - 向上计算我有多少次不得不再删掉一个 shop_id 以保留一些,但这似乎是很多无用的脚本。

如果你有什么好主意,请告诉我。

【问题讨论】:

    标签: sql count unique numbers records


    【解决方案1】:

    这正是聚合函数的用途。您为表中的每组行制作一行输出。按 shop_id 对它们进行分组,并计算每组中有多少行。

    select shop_id, count(1) from TABLE_NAME
      group by shop_id
    

    【讨论】:

    • (1) Count后面的意思是SELECT后面的哪个参数要计数?
    • 不,(1) 不是对任何列的引用,它只是整数值 1。更典型的是使用 COUNT(*) 或 COUNT(columnname)。 Glomek 使用 COUNT(1) 作为常量整数值,因为有些人认为这比引用列更快。
    • 优化器应该注意使 count(*) 花费与 count(1) 一样多的时间。我猜有些优化器不会。
    • 谢谢这么多家伙,帮了大忙!上帝保佑所有帮助的人
    • ...你可以添加`order by count(1);' to.. err.. order by count :P
    猜你喜欢
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多