【问题标题】:SQL to calculate the overall total and sub total numberSQL 计算总和子总数
【发布时间】:2020-11-19 08:45:14
【问题描述】:

我有一个示例数据如下。

我要计算子总数和总数。

这就是我想要的:

如何在 BigQuery 中尽可能简单地实现它?

谢谢一百万!

【问题讨论】:

    标签: sql group-by count google-bigquery


    【解决方案1】:

    聚合加组聚合:

    SELECT 
      product,
      COUNT(*),
      SUM(COUNT(*)) OVER ()
    FROM test_table
    GROUP BY product
    

    【讨论】:

    • 我喜欢这个答案,看起来很简单。谢谢!
    【解决方案2】:
    We can use an inline view of the same. Looks pretty simple.
    
    create table test_table
    (
    orders varchar2(20),
    userid int
    )
    
    insert into test_table values ('Phone', 1);
    insert into test_table values ('Computer', 2);
    insert into test_table values ('Phone', 3);
    insert into test_table values ('Computer', 4);
    insert into test_table values ('Computer', 5);
    
    
    
    
    
    **select orders,count(1) as user_count,
    (select count(*) from test_table) as total_user_count
    from test_table
    group by orders**
    

    【讨论】:

      【解决方案3】:

      我会回答这个问题,但请不要指望下次有人回答你,因为简单地说“我们在这里不这样做”我们帮助人们,我们不在那里做家务。 但是,这是您的查询: 要获取电话用户号码,您必须输入如下查询:

      SELECT COUNT(order) FROM (table-name) WHERE order LIKE "phone"
      

      为了获取计算机用户编号,您必须输入如下查询:

      SELECT COUNT(order) FROM (table-name) WHERE order LIKE "computer"
      

      我不理解您刚刚设置的关于总用户数的示例,所以很抱歉,如果您更易于描述的话,我无法帮助您。

      【讨论】:

      • 好吧,order LIKE "phone" 应该是 "order" = 'phone'。但是有 GROUP BY
      【解决方案4】:
        Select Distinct [Order]
        ,COUNT([Order]) [User Count] 
        ,(Select Count([Order]) FROM [orders]) [Total User Count]
        FROM [orders] 
        GROUP BY  [Order]
        ORDER BY [Order] DESC
      

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
      猜你喜欢
      • 2021-05-03
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 2019-08-24
      • 2014-09-16
      • 2023-03-23
      • 1970-01-01
      • 2012-01-25
      相关资源
      最近更新 更多