sql多列统计
A. 数据库多列统计, 一个表中含有ABC三类物品的价格, 有三个公司分别出售. 怎么写sql语句实现在一个表中统计
create table sales
(
商品名 varchar(5),
公司 varchar(5),
类别 varchar(5),
价格 int
)
insert into sales values('x1','X','A',100)
insert into sales values('x2','X','A',70)
insert into sales values('x3','X','B',100)
insert into sales values('y1','Y','A',60)
insert into sales values('y2','Y','B',80)
insert into sales values('y3','Y','C',100)
insert into sales values('z1','Z','B',60)
insert into sales values('z2','Z','B',80)
insert into sales values('z3','Z','C',100)
; with ct as
(
SELECT 公司,类别,
(select avg(价格) from sales where s.类别=sales.类别 and s.公司=sales.公司)as 均价 FROM sales s
)
select 公司 ,
max(case 类别 when 'A' then 均价 else 0 end) [A] ,
max(case 类别 when 'B' then 均价 else 0 end) [B] ,
max(case 类别 when 'C' then 均价 else 0 end) [C] ,
AVG(均价) [总均价]
from ct
group by 公司
公司 A B C 总均价
----- ----------- ----------- ----------- -----------
X 85 100 0 90
Y 60 80 100 80
Z 0 70 100 80
(3 行受影响)
B. SQL 分组多列统计的问题
这个直接查询不太好查,建议自己写个存储过程或者函数来做。
比如求那个符合率,求两张表的临床字段的条目总数,然后把是的也求出来,相除就得出符合率了。
C. sql 多列统计
select你要分别查的工号,count(1)from表groupby你要分别查的工号
比如select检查工号,核对工号,申请工号,count(1)from表groupby检查工号,核对工号,申请工号
或者你是要这样的
SELECT检查工号,核对工号,申请工号,
COUNT(1)OVER(PARTITIONBY检查工号),
COUNT(1)OVER(PARTITIONBY核对工号),
COUNT(1)OVER(PARTITIONBY申请工号)
FROM表
D. SQL 统计多列方法
select TxAddress,
count(*) as '总数',
sum(case when PhySicvalue>10 and PhySicvalue<60 then 1 else 0 end) as 'test'
from rxphysicinfo where RxObject='温度' and Txaddress like '%' group by TxAddress
应该是这个意思吧
E. sql使用count可以统计两列吗
SELECT
COALESCE ( SUM( CASE WHEN B='2016' and C='A' and D='4' THEN 1 ELSE 0 END ), 0 ) AS A1,
COALESCE ( SUM( CASE WHEN B='2016' and C='A' THEN 1 ELSE 0 END ), 0 ) AS A2
FROM
ABC
F. sql查询语句按条件统计字段值并在一个表中多列显示
这个sql可以通过将初始查询结果集用括号括起来当作一个子查询(也可以称之为虚拟表),然后再对其实施进一步筛选从而获得另一个结果集的办法予以实现。
例如列出各科平均分在80到90分的同学姓名和各科平均分
select stu.name,t.平均分 from stu,
(select sid,avg(score) as 平均分 from scores group by sid)t
where stu.sid=t.sid and t.平均分 between 80 and 90;
事实上Sql可以通过这种方法实现多重子查询筛选、嵌套和连接非常方便。
G. SQL中如何用select 语句查询统计多个非空列字段的数量
select'列1'as列名,count(*)as数量from表1where列1isnull
unionall
select'列2'as列名,count(*)as数量from表1where列2isnull
unionall
select'列3'as列名,count(*)as数量from表1where列3isnull
这样?还有,你用的什么数据库
H. sql统计一个表的多列
我在机器上面试验过了,下面的语句没有问题,不过你需要修改一下表名,列名以及那几个特殊字符。 应该可以满足你的要求了。
我用的表:
a1
a2
a3
a4
a5
b1
b2
b3
b4
b5
c1
c2
c3
c4
c5
结果:
a 5
b 5
c 5
select t, count(t)
from (select case
when instr(name, 'a') != 0 then
'a'
when instr(name, 'b') != 0 then
'b'
when instr(name, 'c') != 0 then
'c'
else
'other'
end t
from leo) a
group by t;
I. 求解SQL怎么多列计数
SELECT date,
SUM(CASE WHEN a<1 then 1 else 0 end ) as a_less_1,
SUM(CASE WHEN b>1 then 1 else 0 end ) as b_gt_1
FROM TABLE_1
GROUP BY date
ORDER BY date
逻辑:按日期分组,把同一天的全部记录中:把 每一条 a<1 的记录算为1 ,其他算为0;再相加起来有多少个1就是代表这一天里有多少条a<1的记录。
J. sql语句如何实现实现查询多列的数据
从你的需求看,是前后矛盾的.
想根据proctID分组 实现查询多列数据,而 实际上,后面的列内容并不相同,因此,肯定会出来多个数据.
如果想 唯一查询一条数据就行,而 多列的不同,谁也无法确定你要那个.
如果是 统计字段的多列数据,是可以的,分组时候,选择统计数据字段即可.