當前位置:首頁 » 編程語言 » sql按日期分組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql按日期分組

發布時間: 2022-03-04 03:03:24

『壹』 sql: 一般情況按年分組,特殊年份按指定日期分組,SELECT語句怎麼寫

如果只是一年的話還好說,如果是三四年那就麻煩了,但是如果每一年都要這樣還反而簡單了,最怕的就是某些特殊要求,那樣不好寫。
我寫一個一年的,寫一個全部的。
這是一年的,可能casewhen不能這么直接放在groupby的後面,那麼可以先這么改造一下表,然後外面在套一層select就可以實現了。
select case when year(日期)=2017 and month(日期)<5 then '2017-05-01以前'
when year(日期)=2017 and month(日期)>4 then '2017-05-01至年底' else year(日期) end
年份,count(*) from table group by
(case when year(日期)=2017 and month(日期)<5 then '2017-05-01以前'
when year(日期)=2017 and month(日期)>4 then '2017-05-01至年底' else year(日期) end)
全部的
select concat(year(日期),case when month(日期)<5 then 1 else 2 end) 組合欄位,count(*) from table group by concat(year(日期),case when month(日期)<5 then 1 else 2 end)
其實是一樣的,就是把原表改了一下,只是這兩種情況是比較好改的,如果有三年或者四年是需要進行這樣的分組,那就麻煩了。如果有這種情況,建議在表中加一個標示欄位,那樣就能簡單一些了。

『貳』 sql資料庫怎麼實現分組並取每組的前1條語句,按日期排序

select * from
(
select row_number() over(partition by '分組' order by '日期') as rownum -- 排序並分組
, * -- 所需顯示的欄位
from 表
) as T
where T.rownum = 1

對每組的數據按日期排序並加上行號
取出時只取行號為1,也就是第一條數據。

『叄』 SQL把日期按月分類,匯總相關數據

不知道你是什麼資料庫,只能寫個意思,具體的內容要你自己搞定。
其實就是把日期欄位截取一下,如果日期本身沒辦法截取,那就轉換一下。比如如果是oracle那麼可以用to_char轉換為字元型,然後再截取。如果擔心1月和10月截取重復,那就多截取一位,或者查找第二個/字元的位置截取。
截取完成後,在用截取後的日期和客戶分組,金額匯總求和就可以了。
我比較熟悉oracle,我用oracle的寫法嘗試這寫一個,如果不是oracle,那麼你就要自己找找類似的了。(日期也可以直接截取,不過好長時間沒寫忘記怎麼寫了,就寫一個轉換的吧)
select substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1) 月份,客戶,sum(金額匯總) from table group by substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1) ,客戶

『肆』 sql 求和 按時間分組

select 單位,sum(case when 月份=1 then 金額 else 0 end) 金額(月份1),
sum(case when 月份=2 then 金額 else 0 end) 金額(月份2),
sum(case when 月份=3 then 金額 else 0 end) 金額(月份3)
from table1 group by 單位

『伍』 SQL中怎樣對datetime數據類型按日期分組

轉換後如果日期列是datetime的話這樣寫:
select cast(convert(varchar(10),日期,120) as datetime),金額 from 表

轉換後如果日期列為varchar型的話這樣寫:
select convert(varchar(10),日期,120),金額 from 表

以上,希望對你有所幫助!

『陸』 sql語句按照日期分組怎麼寫

1.如果你的時間格式是2012-01-13 17:35:52.217這樣的形式,(主要是那個01不要是1),用下面這個
SELECT convert(varchar(10),時間,23),SUM(數字數據) FROM 表
group by convert(varchar(10),時間,23)
2.如果你的時間格式不是上面的格式,先轉化成datetime:
SELECT convert(varchar(10),cast(時間 as datetime),23) ,SUM(數字數據) FROM 表
group by convert(varchar(10),cast(時間 as datetime),23)
3.如果報錯,請追問~

『柒』 SQL按當天時間分組顯示當天的所有記錄

Oracle直接用sql就可以
select .... from table where to_date(to_char(field3,'YYYY-MM-DD'),'YYYY-MM-DD')=to_date(to_char(sysdate,'YYYY-MM-DD'),'YYYY-MM-DD') group by field3

『捌』 SQL 按日期時間分組語句的寫法

對,sql對DateTime類型數據操作時都會精確到毫秒,而用了CONVERT(varchar, in_date, 120)後會轉換成yyyy-mm-dd hh:mi:ss(24小時制)格式

『玖』 sqlserver如何根據日期進行分組查詢

日期分組的概念,就是把日期所在的欄位,轉換為 一個人日期類型,然後group by

sqlserver日期分組相關知識

selectconvert(varchar,dateinfo,111)asa,sum(***)fromtableName
groupbyconvert(varchar,dateinfo,111)

請參閱,如有疑問,及時溝通!

謝謝!

『拾』 SQL server 對日期每三天進行分組

1、首先需要一個能生成日期范圍的表值函數

/*
生成一個日期范圍,如2014.01、2014.02...
@Increment步進值
@StartDate開始日期
@EndDate結束日期
----------------------
@SelectedRange返回值名稱(多語句表值函數的返回值必須存放在返回值變數中)
返回表的欄位和類型:
iDateDATETIME,
iYearchar(4),
iMonthchar(2),
iYMCHAR(7)
*/

CREATEFUNCTION[dbo].[DateRange]
(
@Incrementchar(1)='m',
@StartDateDATE='20140101',
@EndDateDATE=null
)

RETURNS@SelectedRangeTABLE
(
iDateDATE,
iYearchar(4),
iMonthchar(2),
iYMCHAR(7)
)
AS
BEGIN
/*.
ThefunctionGETDATE(),soitisnotaconstantexpression.
*/
--IF@EndDateisnull
--SET@EndDate=getdate()
--or
SET@EndDate=Coalesce(@EndDate,GetDate())
;WITHcteRange(DateRange)AS
(
SELECTCAST(@StartDateASDATE)
UNIONALL
SELECT
CASE
WHEN@Increment='d'THENDATEADD(dd,1,DateRange)
WHEN@Increment='w'THENDATEADD(ww,1,DateRange)
WHEN@Increment='m'THENDATEADD(mm,1,DateRange)
END
FROMcteRange
WHEREDateRange<=
CASE
WHEN@Increment='d'THENDATEADD(dd,-1,@EndDate)
WHEN@Increment='w'THENDATEADD(ww,-1,@EndDate)
WHEN@Increment='m'THENDATEADD(mm,-1,@EndDate)
END
)
INSERTINTO@SelectedRange(iDate,iYear,iMonth,iYM)
SELECTDateRange,YEAR(DateRange)[Year],MONTH(DateRange)[Month],CONVERT(VARCHAR(7),DateRange,102)[YM]
FROMcteRange
OPTION(MAXRECURSION0);
RETURN
END

2、使用示例:

SELECT*FROMDateRange('d','2018-01-01','2018-06-01')

4、使用上面的查詢去關聯帶值的表,然後進行SUM即可實現