當前位置:首頁 » 編程語言 » sql連續三個月超50怎麼寫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql連續三個月超50怎麼寫

發布時間: 2022-12-15 03:01:34

『壹』 sql借閱圖書時間超過3個月怎麼計算

假設借書記錄表裡面,有個 [借書日期] 的欄位
那麼使用
DATEDIFF(dd, [借書日期] , GETDATE())
將返回 從借書日期開始,到今天,總共過了多少天。
然後
SELECT
CASE
WHEN ( DATEDIFF(dd, [借書日期] , GETDATE()) > 30 ) THEN
( DATEDIFF(dd, [借書日期] , GETDATE()) - 30 ) * 0.1
ELSE
0.0
END AS 罰款金額
FROM
借書記錄表

『貳』 如何寫連續三個月有記錄的sql

SQL> select org_id , person_id
2 from
3 (
4 select org_id , person_id ,
5 count(*) over ( partition by org_id , person_id order by month_num range 2 preceding ) ttt
6 from test)
7 /
select org_id , person_id
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel

『叄』 sql 查詢 3個月內

DATEDIFF 函數 [日期和時間]格式:DATEDIFF ( date-part, date-expression-1, date-expression-2 );功能:
返回兩個日期之間的間隔,即date-expression-2 減 date-expression-1的以date-part為單位的值。例子:SELECT datediff( month, '1999/07/19', '1999/08/23' );//返回 1
SELECT datediff( day, '1999/07/19 00:00', '1999/07/23 23:59' );//返回 4----------------------------------------------------------------------------------------------------修改:select * from OrderList where UserName='"&Session("UserName")&"' and datediff(Month,BuyTime,getdate(),Now) <=3"

『肆』 sql 求出連續三個月以上用戶金額為0的數據

創建表,插入數據:

createtabletest
(年度varchar(4),
月份varchar(2),
識別號varchar(20),
店名稱varchar(50),
金額int)

insertintotestvalues(2016,1,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,2,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,3,'2201041958080801','大慶市薩爾圖區許馳比薩店',0)
insertintotestvalues(2016,3,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,3,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,4,'2201041958080801','大慶市薩爾圖區許馳比薩店',0)
insertintotestvalues(2016,4,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,4,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,5,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,5,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,6,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,6,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,7,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,9,'12232700556141546K','大興安嶺地區建設工程交易中心',0)
insertintotestvalues(2016,10,'2201041958080801','大慶市薩爾圖區許馳比薩店',0)
insertintotestvalues(2016,10,'2201041958080801','哈爾濱市南崗區許馳比薩店',0)
insertintotestvalues(2016,10,'2201041958080801','綏化市北林區城市比薩綏化店',0)
insertintotestvalues(2016,10,'23010219580302041301','哈爾濱中央大街金店',0)
insertintotestvalues(2016,11,'12232700556141546K','大興安嶺地區建設工程交易中心',0)
insertintotestvalues(2016,12,'12232700556141546K','大興安嶺地區建設工程交易中心',0)

執行:

withtas
(select年度+right('0'+月份,2)+'01'日期,識別號,店名稱,金額,row_number()over(partitionby店名稱orderby年度+right('0'+月份,2)+'01')rnfromtestwhere金額=0)
selectsubstring(a.日期,1,4)年份,substring(a.日期,5,2)月份,a.識別號,a.店名稱,a.金額fromta,
(selectt2.日期,t2.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull
union
selectt1.日期,t1.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull)b
wherea.日期=b.日期anda.店名稱=b.店名稱
anda.店名稱in
(selecta.店名稱fromta,
(selectt2.日期,t2.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull
union
selectt1.日期,t1.店名稱fromtt1leftjointt2on
t1.店名稱=t2.店名稱anddatediff(mm,t2.日期,t1.日期)=1andt1.rn-t2.rn=1wheret2.日期isnotnull)b
wherea.日期=b.日期anda.店名稱=b.店名稱groupbya.店名稱havingcount(*)>=3)
orderbya.店名稱,a.日期

結果:

有可能是寫麻煩了,先看看吧

『伍』 討論一個SQL問題 :關於最近三個月平均消費

由於表的名字,是隨著時間,不斷變化的. 需要使用動態 SQL 來處理。
同時要求 話費表的 表名字, 要有點規律。
例如:

HF_201103: 手機號碼,3月話費消費
HF_201104: 手機號碼,4月話費消費
HF_201105: 手機號碼,5月話費消費
HF_201106: 手機號碼,6月話費消費

這樣的話,存儲過程,可以通過 獲取當前日期, 向前推算出 前3個月的表的名字。

如果沒有上面的問題的話。
那就是

請寫出SQL語句 姓名,近三個月的平均消費

SELECT
表1.姓名,
AVG(a3M.話費消費)
FROM
表1 JOIN
(
SELECT 手機號碼, 4月話費消費 AS 話費消費 FROM 表3 UNION ALL
SELECT 手機號碼, 5月話費消費 AS 話費消費 FROM 表4 UNION ALL
SELECT 手機號碼, 6月話費消費 AS 話費消費 FROM 表5
) a3M
ON (表1.手機號碼 = a3M.手機號碼)
GROUP BY
表1.姓名;

最近三個月平均消費大於或等於50元的手機號碼.

SELECT
a3M.手機號碼,
AVG(a3M.話費消費)
FROM
(
SELECT 手機號碼, 4月話費消費 AS 話費消費 FROM 表3 UNION ALL
SELECT 手機號碼, 5月話費消費 AS 話費消費 FROM 表4 UNION ALL
SELECT 手機號碼, 6月話費消費 AS 話費消費 FROM 表5
) a3M
GROUP BY
a3M.手機號碼
HAVING
AVG(a3M.話費消費) >= 50;

『陸』 時間為默認當期時間並累加3個月SQL語句如何寫

使用sql自帶的日期函數 DateAdd,例子如下,你可以適當改下自己的
select DateAdd(month,3,shijian) from USER

『柒』 SQL提取3-8月中至少連續3個月的流量均大於50M的用戶數。

存儲過程一步一步的處理吧,這個是個需要邏輯的sql了
固定的月份,給個比較死板的思路給你吧
1、循環,8-3次,包含8月就需要8-3+1次,不包含就8-3次,當然循環的數包含8月就從8開始,不包含就從7開始了
2、從大到小,循環時
a.找出大於50M的用戶,在查詢前兩個月,進一步篩選出大於50M的人員,存入到臨時表
3、將臨時表去重,得到你需要的人員,臨時表可以只存ID,也可以存其他的內容,或者你使用表變數也行,如果數據量大的話,建議你用臨時表,不大建議用表變數,不管是存什麼數據,只要有ID,所有數據就任你查了

『捌』 用sql語句查詢金額大於50元的記錄怎麼寫

select * from 表名 where 金額欄位名 > 50;
把上述語句中的中文描述換成實際名稱即可。這是最基本的SQL語句,建議題主找一些SQL方面的書學習一下。

『玖』 SQL查詢最近三個月的數據(查詢最近幾天,幾

1、創建測試表,create table test_date2(id number, v_date date);