求教一道sql面試題,一道SQL面試題,實在不知道怎麼寫了

2022-03-08 21:23:51 字數 5949 閱讀 6454

1樓:匿名使用者

這種需求一般用儲存過程寫,還好你這裡是季度,如果列數較多,那麼使用單條sql難度非常大。

select year,

sum(case when month in( 1,2,3) then total else 0 end) m1,

sum(case when month in( 4,5,6) then total else 0 end) m2,

sum(case when month in( 7,8,9) then total else 0 end) m3,

sum(case when month in( 10,11,12) then total else 0 end) m4

from tab

group by year

2樓:匿名使用者

declare @sql varchar(10)set @sql = 'select year'

select @sql = @sql + ',sum(case month when '''+month+''' then result end) ['+month+']'

from (select distinct month from tablename) as a

select @sql = @sql+' from tablename group by year'

exec(@sql)

3樓:匿名使用者

鑑於這0分也沒給出相應的欄位,給你個提示好了,用轉置函式pivot行列轉換

4樓:利韶段幹帥

select

id,valuea=min(case

when

value='a'

then

value

else

null),

valueb=min(case

when

value='b'

then

value

else

null),

valuec=min(case

when

value='c'

then

value

else

null)

from

table1

group

byid

一道sql面試題,實在不知道怎麼寫了

5樓:殤忄路

select '上午' " ",

max(case when 星期 = '週一' then wm_concat(上午) else null end) 週一,

max(case when 星期 = '週二' then wm_concat(上午) else null end) 週二,

max(case when 星期 = '週三' then wm_concat(上午) else null end) 週三,

max(case when 星期 = '週四' then wm_concat(上午) else null end) 週四,

max(case when 星期 = '週五' then wm_concat(上午) else null end) 週五

from tab

union all

select '下午' " ",

max(case when 星期 = '週一' then wm_concat(下午) else null end) 週一,

max(case when 星期 = '週二' then wm_concat(下午) else null end) 週二,

max(case when 星期 = '週三' then wm_concat(下午) else null end) 週三,

max(case when 星期 = '週四' then wm_concat(下午) else null end) 週四,

max(case when 星期 = '週五' then wm_concat(下午) else null end) 週五

from tab

一道sql面試題,能給出詳細的實現語句最好 15

6樓:紫銀桐楓

select distinct

每個任務所有者當日的總結果數/當日總結果數,

每個任務所有者當日的總任務數/當日總任務數,

task_owner

from (

select sum(result_num) over(partition by 時間欄位擷取到日期,result_server) 當日總結果數,

sum(result_num) over(partition by 時間欄位擷取到日期,result_server,task_owner) 每個任務所有者當日的總結果數,

count(1) over(partition by 時間欄位擷取到日期,result_server) 當日總任務數,

count(1) over(partition by 時間欄位擷取到日期,result_server,task_owner) 每個任務所有者當日的總任務數,

時間欄位擷取到日期,

task_owner,

result_num

from table_a);

不知道行不行,我這也測不了;

我用的是plsql,想來差不多,不過plsql我就直接寫個過程算了,沒必要集中到一段sql裡,費腦子

7樓:依舊在北漂

好繞,看到最後看不下去了,不知道要幹啥。。。。。

一道sql面試題

8樓:

select b.* ,m1.正常,m2.病假,m3.事假 from userinfo b

left join (select a.u_id, count(a.checktype) 正常 from checkinfo a where a.

checktype='正常' group by a.u_id ) m1 on b.u_id=m1.

u_id

left join (select a.u_id, count(a.checktype) 病假 from checkinfo a where a.

checktype='病假' group by a.u_id ) m2 on b.u_id=m2.

u_id

left join (select a.u_id, count(a.checktype) 事假 from checkinfo a where a.

checktype='事假' group by a.u_id ) m3 on b.u_id=m3.

u_id

不是最簡寫法

-----------------------

select b.* ,m.病假,m.正常,m.事假 from userinfo b

join

(select a.u_id,

count(case when a.checktype='病假' then '1' end ) 病假 ,

count(case when a.checktype='正常' then '1' end ) 正常 ,

count(case when a.checktype='事假' then '1' end ) 事假

from checkinfo a group by a.u_id) m on m.u_id=b.u_id

這樣寫簡單,但效率我覺得是一樣的

9樓:雞鳴燈滅不上網

你那兩個表的欄位不是很理解

select userinfo.username, case(when checkinfo.checktype = 病假 then 出勤記錄 end) as 病假天數,case(when checkinfo.

checktype = 事假 then 出勤記錄 end) as 事假天數 from userinfo, checkinfo where userinfo.u_id = checkinifo.u_id

10樓:其建修品

我覺得應該先將raindate轉換成列,就是列出所有下雨的日期,再選擇出未下雨的日期。

語句如下:

select

*from

raindate

declare

@min

intdeclare

@max

intdeclare

@date

datetime

declare

@name

varchar(100)

declare

@sql

varchar(1000)

set@min

=(select

min(id)

from

raindate)

set@max

=(select

max(id)

from

raindate)

create

table

#t(old_id

varchar(100)

,date

datetime)

while

@min

<=@max

begin

set@date

=(select

startdate

from

raindate

whereid=

@min)

while

@date

<=(select

enddate

from

raindate

whereid=

@min)

begin

insert

into

#t(old_id,date)

select

id,@date

from

raindate

whereid=

@min

set@date

=dateadd(day,1,@date)endset

@min

=@min+1

endselect

*from

#tdrop

table#t

一道華為關於sql的面試題

11樓:

主要區別在於對資料型別值的處理上,select * from table會檢索包括 null的所有值,

而後面語句 中 like '%%'所匹配的一般只有任意字串,不會對null,數字型別等進行匹配

12樓:匿名使用者

like對null不處理

13樓:

應該是考慮欄位為null與空字串''的問題吧

14樓:匿名使用者

條件不同收索出的結果當然不同了 如果table中的欄位數超過第2句語言欄位數就回有差別

一道sql面試題,到底能難倒了多少人

15樓:

第四條我沒有。沒有家,沒有媽,多少人和我一樣。

16樓:匿名使用者

什麼題?能把問題描述清楚嗎?

17樓:匿名使用者

這個具體要看個人能力。就如同參加高考,能考進清華大學的一共就那麼多。

一道軟體測試面試題中的sql題目,求解

求sql常考面試題 100

18樓:匿名使用者

留個郵箱!發給你兩個面試題集合給你!

19樓:教導部主任

分頁儲存過程,偽列,考的比較多

年薪100萬的一道面試題,這是一道年薪10萬的面試題,當時只有一個人答對了。

是9月1號!小明說 如果我不知道的話,小強肯定也不知道這句話說明在小明知道的月分一組裡面的日子,一定都是跟別的月分的日子有重複,否則小強不一定不知道!這樣可以淘汰6月和12月 小強說 本來我也不知道,但是現在我知道了 說明日子肯定不是5要不他還是不知道 小明說 哦,那我也知道了 說明只能是9月1號,...

民法的一道題。求教,一道民法題,求教

您的問題,我看不太懂 1 張某為什麼要否認,房屋的所有權並不是張某的。2 張某否不否認,不影響房屋歸屬李某的事實,因為那是法院判給李某的。3 不存在催告問題。4 如果最後房屋歸了吳某,張某可以向李某追究合同責任。5 吳某屬於善意取得,並非不當得利。本題是2011年國家司法考試卷三第55題的真題,現將...

求教!一道C語言題目,求教一道C語言的題目!

你主函式裡m肯定還是1,func函式中的靜態變數應該是8了吧。你檢視變數值的位置是什麼樣的,如果在主函式裡檢視肯定是主函式中的m,即為1,因為發生作用域覆蓋了。你是第二次進入func後設定斷點,檢視m數值的可定為8。由程式執行結果為8 此時i 3,m 3 1 4,因此返回值為8 17 此時i 3 8...