Memoryizz

day 06知识点整理

   having 语句

WHERE 子句对被选择的列施加条件,而 HAVING 子句则对 GROUP BY 子句所产生的组施加条件。

SQL > SELECT ID, NAME, AGE, ADDRESS, SALARY FROM CUSTOMERS GROUP BY age HAVING COUNT(age) >= 2;

    join 连接

select * from table 1 left join table 2 on t1.id = t2.id

select * from 
sdata.dbo.student a LEFT join sdata.dbo.sc b on a.Sno = b.Sno
left join sdata.dbo.course c on b.Cno =c.Cno

 计算函数

 AVG()*1.0,sum()*1.0,count()*1.0,与group by连用

 case when

case when 条件 then 结果 else 结果 end

  主键

bw_id int primary key,                       -- 主键的关键字 即表里面的数据不能完全一致--

   时间取值

insert into sdata.dbo.testday02
values(
'11'
,'王'
,'yi8'
,'100'
--,GETDATE() --          -- 自动输入
--,GETDATE()-- 
,'2018-07-07'                --手动输入--
,'2018-07-07')
select *from sdata.dbo.testday02
select * ,YEAR(GETDATE())from sdata.dbo.testday02           --,YEAR(GETDATE())取年份--
select len(city),city from sdata.dbo.testday02                         --求字段里面的字段名称的长度--
select SUBSTRING(city,1,3),city from sdata.dbo.testday02   --从city表里面的第一位截取到第四位显示--
select DATENAME(WEEKDAY,GETDATE())                           --返回周几--
select DATEpart(WEEKDAY,GETDATE())                               --返回的是第几天--

--为表里面增加字段--
alter table sdata.dbo.testday02 add update_date date;
alter table sdata.dbo.testday02 add update_date2 datetime;   --具体的时间--

 

--去重复操作--

 distinct 

--top3排序--
select top 3 *from table1

--sql语句套路模板--
select 
conlum1           --列名称
,conlum2
,ABS(conlum)   --取绝对值--
,AVG(conlum)
,SUM(conlum)
,MIN(conlum)
,MAX(conlum)
from 
sdata.dbo.testday02   --表名称--
where conlum is null   --条件--
group by 
conlum1
,conlum2
order by
conlum desc

--显示当天更新的数据--

select * from #mian
where date_stamp=cast(GETDATE() as DATE)

cast(GETDATE() as DATE) 

 

CONVERT显示日期

--varchar(20)表示显示的长度,120表示显示的格式--
select CONVERT(varchar(20),GETDATE(),120)

 

--  用命令行将数据导入到数据库里面去  bcp sdata.dbo.billing_data in D:\soft\BCP-billing_data.txt -c -T   --

--sdata.dbo.billing_data  表名字   D:\soft\BCP-billing_data.txt  数据文件位置   其他的都是规定死的 --

 

--  bcp sdata.dbo.cost_detail in D:\soft\BCP-cost_detail.txt -c -b 5000 -T     --

--每5000行执行一下--

cast转换字符串类型

cast(b.loc_to_usd as float)

用row求最新日期

 

 

--2018年5月9号占5月的百分比--
day(CAST(max_date as DATE))*1.0/DAY(DATEADD(MONTH,1,CONVERT(varchar(6),CAST(max_date as DATE),112) + '01 ')-1)


一个月有多少天

简单的方法  select   day(dateadd(month,1,'201805'+ '01 ')-1)

老师的方法
select
DAY(DATEADD(MONTH,1,CONVERT(varchar(6),'20180509',112) + '01 ')-1) --一个月有多少天
select day('20180509')

 

获取当前月的天数

SELECT 32-DAY(getdate()+32-DAY(getdate()))

 

思路:同上,即获取到某月的最后一天,即下个月第一天的前一天日期,用day()函数取到天数

例如 m_date=20150204

day(cast(convert(varchar(8),(m_date-m_date%100+1+100) ,112) as datetime)-1)

posted on 2018-08-14 10:31  Memoryizz  阅读(113)  评论(0编辑  收藏  举报

导航