【问题标题】:Multiple counts with one SQL query一个 SQL 查询的多个计数
【发布时间】:2020-06-11 06:02:24
【问题描述】:

我需要计算表中使用单个查询对产品代码进行过滤的过程数,但在同一列中返回单独的计数。数据是这样的

prod_id prod_code
1 0A
2 0A
3 0B
4 0A
5 0B
6 0B

从上面的数据集中,0A 和 0B 的总数分别为 3 和 3。这是我数完后想要的

prod_code count prod_name
0A 3 Product A
0B 3 Product B

我知道使用单个查询进行多次计数的一种方法就是这样。但是,这为每个产品的计数提供了单独的列。我怎样才能让他们在同一列?

select sum(case when proc_code LIKE '0A' then 1 else 0 end) as count1
,sum(case when proc_code LIKE '0B' then 1 else 0 end) as count2
from products

【问题讨论】:

  • 提示:GROUP BYCOUNT().

标签: sql


【解决方案1】:
select prod_code, count(prod_code)
from products
group by prod_code

【讨论】:

  • 谢谢亚历克斯 - 这是一个非常微不足道的问题。我认为在我的情况下面临的挑战是我还想将产品名称添加到输出中(参见操作)。这些是硬编码的名称而不是列中的值,因此我无法将它们添加到分组依据。这可能会通过案例陈述来完成吗?问题已解决:选择情况时 products.prod_id = '0A' 然后 'Product A' 当 products.prod_id = '0B' 然后 'Product B' end as [Product_Name] , count(products.prod_id) as [Count] from products where products.prod_id in ('0A', '0B') group by products.prod_id
  • @EdwardChau 你怎么知道 0A 是产品 A。你只是从 prod_code 中删除 0 并放入 Product 吗?
  • 我先验地知道对应的产品代码是什么。如果我遇到多个产品代码对应于产品 A 的情况怎么办。如果每个产品只有一个代码,我认为 group by 子句可以正常工作,但如果有多个代码,我认为我不会得到预期的结果。我将如何处理这种情况?
猜你喜欢
  • 1970-01-01
  • 2021-07-17
  • 2010-11-19
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多