计算某一列中另一列的值为 1 的行数
我正在使用 select count unique
来计算列中的记录数。但是,我只想计算不同列的值为 1 的记录。
所以我的表看起来有点像这样:
Name------Type
abc---------1
def----------2
ghi----------2
jkl---------1
mno--------1
我希望查询仅计算 abc、jkl 和 mno,从而返回“3”。
我无法使用 CASE 函数执行此操作,因为这似乎仅适用于同一列中的条件。
编辑:抱歉,我应该添加,我想进行一个计算这两种类型的查询。 所以结果应该看起来更像: 1---3 2---2
I am using a select count distinct
to count the number of records in a column. However, I only want to count the records where the value of a different column is 1.
So my table looks a bit like this:
Name------Type
abc---------1
def----------2
ghi----------2
jkl-----------1
mno--------1
and I want the query only to count abc, jkl and mno and thus return '3'.
I wasn't able to do this with the CASE function, because this only seems to work with conditions in the same column.
EDIT: Sorry, I should have added, I want to make a query that counts both types.
So the result should look more like:
1---3
2---2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您想按类型返回计数:
您应该避免使用 type 之类的关键字作为列名称 - 如果您使用更具体的非保留字,则可以避免使用大量方括号。
If you want to return the counts by type:
You should avoid using keywords like type as column names - you can avoid a lot of square brackets if you use a more specific, non-reserved word.
我想你会想要(假设你不想计算 ('abc',1) 两次,如果它在你的表中两次):
编辑:用于获取所有类型
I think you'll want (assuming that you wouldn't want to count ('abc',1) twice if it is in your table twice):
EDIT: for getting all types
从 tbl 中选择 count(1),其中 type = 1
select count(1) from tbl where type = 1