【问题标题】:How To Count and Group By Same Column [closed]如何按同一列计数和分组[关闭]
【发布时间】:2020-02-04 15:14:30
【问题描述】:

我正在尝试获得如下结果,列名无关紧要,我可以稍后对其进行编辑。

Date - Visit Amount- Customer Count by Visit Amount 
2020        1                  10                   
2020        2                  50                   
2020        3                  123                  
2020        6                  24                                   

我有 date 和 customer_id 列。简而言之,我试图找出 2020 年有多少客户光顾了我的商店 1 次、2 次等。我找不到它,因为无法按访问量分组。

【问题讨论】:

  • 请显示您表格中的数据!

标签: sql sql-server tsql select


【解决方案1】:

我试图找出 2020 年有多少顾客光顾了我的商店 1 次、2 次等等。

您可以使用两个级别的聚合:

select num_visits, count(*) as num_customers
from (select customer_id, count(*) as num_visits
      from visits v
      where visit_dt >= '2020-01-01' and visit_dt < '2021-01-01'
      group by customer_id
     ) v
group by num_visits
order by num_visits;

这构成了表名和列名,因为您的问题没有提供它们。但是应该很容易看出它在做什么。

编辑:

如果您希望每年分开:

select year, num_visits, count(*) as num_customers
from (select year(visit_dt) as year, customer_id, count(*) as num_visits
      from visits v
      group by year(visit_dt), customer_id
     ) v
group by year, num_visits
order by year, num_visits desc;

【讨论】:

  • 你用的名字没问题,我改了,非常感谢帮助。如何将日期显示为第一列? Date - Visit Amount- Customer Count by Visit Amount 2020 1 10 2020 2 50 2020 3 123 2020 6 24 2019 1 18 2019 2 24
  • 基本上,我可以不检查特定日期,而是按年份查看所有数据,格式相同,如日期、访问次数、计数?
  • @Anil 。 . .这是对查询的一个小调整,所以我修改了答案。
【解决方案2】:

您可以使用 CTE。

WITH TBL AS (
    --your first grouping query here
),
AS TBL2 (
    SELECT 
        COUNT(Visit_Amount) Visit_Amount,
        COUNT(Customer_Count_by_Visit_Amount) Customer_Count_by_Visit_Amount
    FROM TBL 
    GROUP BY Visit_Amount,Customer_Count_by_Visit_Amount
)
SELECT * FROM TBL2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    相关资源
    最近更新 更多