sql 查询语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 查询语句相关的知识,希望对你有一定的参考价值。

我一个档案表里有这些字段:
街道,地区,社区,补助类别,姓名
现在我要求的是:
在每个地区中,每个街道相对应的人数,以及享受不同补助类别的人数
大概就好像是:
总人数 补助类别1 补助类别2
xx街道

参考技术A select 地区,街道,(补助类别1+ 补助类别2+...) 人数,
case
when [补助类别1] is null then 0
else [补助类别1] end as [补助类别1],
case
when [补助类别2] is null then 0
else [补助类别2] end as [补助类别2]
from (SELECT 地区,街道,补助类别,COUNT(姓名) as 人数 FROM PUZHU GROUP BY 地区,街道,补助类别) a
pivot (max(a.人数) for 补助类别 in([补助类别1],[补助类别2],...)) as d

其中补助类别1.补助类别2...是你表中具体的补助类别,如低保等等都列出来,有点麻烦但是能实现你的功能
参考技术B 比如表tb
jiedao diqu shequ leixing xingming
jd1 dq1 sq1 A zs
jd2 dq2 sq2 B ls
jd1 dq1 sq1 C ww
jd3 dq1 sq1 A zl
jd1 dq1 sq1 B qq
jd2 dq1 sq1 A kk

SQL语句

select
a.jiedao as '街道',count(a.jiedao) as '总人数',
sum(case a.leixing when 'A' then 1 else 0 end) as '补助类型A',
sum(case a.leixing when 'B' then 1 else 0 end) as '补助类型B',
sum(case a.leixing when 'C' then 1 else 0 end) as '补助类型C'
from zhidao_buzhu a
group by a.jiedao
结果
接到 总人数 A B c
jd1 3 1 1 1
jd2 2 1 1 0
jd3 1 1 0 0

局限性:
本SQL 语句仅仅能解决 补助类型 总数确定的情况。本回答被提问者采纳
参考技术C select 地区,街道,count(姓名) 总人数,(case when 补助类别=1 then count(姓名)end) 补助类别1 ,(case when 补助类别=2 then count(姓名)end) 补助类别2 from 档案表 group by 地区,街道 参考技术D select 地区,街道,[补助类别1],[补助类别2] from table
pivot
(count([姓名])
for [补助类别] in([补助类别1],[补助类别2])) a

如何查找MySQL中查询慢的SQL语句

参考技术A 一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句1,slow_query_log这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。2,long_query_time当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。3,slow_query_log_file记录日志的文件名。4,log_queries_not_using_indexes这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。二、检测mysql中sql语句的效率的方法1、通过查询日志(1)、Windows下开启MySQL慢查询MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上代码如下log-slow-queries=F:/MySQL/log/mysqlslowquery。loglong_query_time=2

以上是关于sql 查询语句的主要内容,如果未能解决你的问题,请参考以下文章

怎么用sql语句查询?

sql查询语句?

SQL查询语句

sql查询语句大全

如何查找MySQL中查询慢的SQL语句

如何查找MySQL中查询慢的SQL语句