需要每种值类型的行数
Need count of rows for each value type
我有一个table格式
SID LinkName
A1 Link1
A1 Link2
A2 Link1
A2 Link2
A2 Link3
A3 Link2
A1 Link1
A2 Link2
我需要按以下格式显示每个 link 类型的计数结果
Link1 Link2 Link3
3 4 1
请指教。
编辑:
此外,如果我需要以以下格式显示每个 link 类型的不同计数的结果。像A1 -> Link1出现两次但只需要统计一次
Link1 Link2 Link3
2 3 1
select sum(case when LinkName = 'Link1' then 1 end) as link1,
sum(case when LinkName = 'Link2' then 1 end) as link2,
sum(case when LinkName = 'Link3' then 1 end) as link3
from tablename
在MySQL中,你可以这样做:
select sum(linkname = 'link1') as link1,
sum(linkname = 'link2') as link2,
sum(linkname = 'link3') as link3
from t;
编辑:
如果你想计算不同 sid
:
select count(distinct case when linkname = 'link1' then sid end) as link1,
count(distinct case when linkname = 'link2' then sid end) as link2,
count(distinct case when linkname = 'link3' then sid end) as link3
from t;
通常你不会把它们放在列中,而是放在行中:
select LinkName, count(LinkName) as LinkCount
from table group by LinkName
...这将给出:
LinkName | LinkCount
Link1 | 2
Link2 | 3
Link3 | 1
那样的话,如果出现新的 link 类型,也没什么大不了的。那行得通吗,还是必须在列中?如果是这样,您可能正在查看单个计数 (*) 和两个子选择或相当复杂的自连接或某种案例方法。喜欢:
select count(*) as Link1, (select count(*) from table where LinkName='Link2') as Link2...
from table where LinkName='Link1'
...或类似的东西。
select Link1,Link2,Link3
from
(
select Id,Rtrim(Ltrim(Name)) as Name
from Table_1
) src
pivot
(
count(Id)
for Name in (Link1,Link2,Link3)
) piv;
其中给出:
Link1 Link2 Link3
4 3 1
我有一个table格式
SID LinkName
A1 Link1
A1 Link2
A2 Link1
A2 Link2
A2 Link3
A3 Link2
A1 Link1
A2 Link2
我需要按以下格式显示每个 link 类型的计数结果
Link1 Link2 Link3
3 4 1
请指教。
编辑: 此外,如果我需要以以下格式显示每个 link 类型的不同计数的结果。像A1 -> Link1出现两次但只需要统计一次
Link1 Link2 Link3
2 3 1
select sum(case when LinkName = 'Link1' then 1 end) as link1,
sum(case when LinkName = 'Link2' then 1 end) as link2,
sum(case when LinkName = 'Link3' then 1 end) as link3
from tablename
在MySQL中,你可以这样做:
select sum(linkname = 'link1') as link1,
sum(linkname = 'link2') as link2,
sum(linkname = 'link3') as link3
from t;
编辑:
如果你想计算不同 sid
:
select count(distinct case when linkname = 'link1' then sid end) as link1,
count(distinct case when linkname = 'link2' then sid end) as link2,
count(distinct case when linkname = 'link3' then sid end) as link3
from t;
通常你不会把它们放在列中,而是放在行中:
select LinkName, count(LinkName) as LinkCount
from table group by LinkName
...这将给出:
LinkName | LinkCount
Link1 | 2
Link2 | 3
Link3 | 1
那样的话,如果出现新的 link 类型,也没什么大不了的。那行得通吗,还是必须在列中?如果是这样,您可能正在查看单个计数 (*) 和两个子选择或相当复杂的自连接或某种案例方法。喜欢:
select count(*) as Link1, (select count(*) from table where LinkName='Link2') as Link2...
from table where LinkName='Link1'
...或类似的东西。
select Link1,Link2,Link3
from
(
select Id,Rtrim(Ltrim(Name)) as Name
from Table_1
) src
pivot
(
count(Id)
for Name in (Link1,Link2,Link3)
) piv;
其中给出:
Link1 Link2 Link3
4 3 1