AMcoder - javascript, python, java, html, php, sql

Տեղադրեք որոշակի թվով գրառումներ նույն սյունակի արժեքով այլ աղյուսակում

Ենթադրենք, ես ունեմ երկու աղյուսակ՝ tblProducts և tblPromoItems, որոնք երկուսն էլ պարունակում են նույն գրառումների տեսակները: Պարզեցման համար ենթադրենք, որ յուրաքանչյուր գրառում ունի միայն երկու հատկանիշ՝ ID և creation_date: Ինչպե՞ս կվերցնեմ գրառումները tblProducts-ից և տեղադրեմ tblPromoItems-ում, այնպես, որ տեղադրվեն միայն n ընդհանուր գրառումները, և կան միայն i նույն creation_date-ով գրառումների դեպքերը:

Օրինակ, օգտագործելով ստորև բերված աղյուսակը, ինչպես կարող եմ տեղադրել ընդհանուր 3 գրառում՝ հաշվի առնելով այն պայմանը, որ կարող է լինել առավելագույնը 2 գրառում նույն creation_date-ով:

tblProducts

ID| creation_date

A | 2014-12-01

B | 2014-12-01

C | 2014-12-01

D | 2014-12-02
08.12.2014

  • Ո՞ր RDBMS և ի՞նչն է սահմանում, թե որ 2 գրառումները պետք է վերադարձվեն: 09.12.2014
  • դուք պետք է չափորոշիչներ մշակեք հաղթողին որոշելու համար, երբ կան բազմաթիվ հնարավորություններ 09.12.2014
  • Ենթադրում եմ, որ ես փորձել եմ դա շատ պարզեցնել: Սա կլինի ms sql սերվերի համար: Իսկ իրականում creation_date դաշտը կլինի datetime, այնպես որ ես կարող եմ ասել, թե որն էր իրականում առաջինը տվյալ ամսաթվի համար (և դա կօգտագործվի որպես փողկապ անջատող): Ես պարզապես փորձում եմ լավ միջոց գտնել այս գործով սկսելու համար: 09.12.2014

Պատասխանները:


1

Դուք կարող եք օգտագործել row_number()common table expression-ի հետ մեկ ամսաթվի 2 գրառում ստանալու համար.

with cte as (
  select *, 
    row_number() over (partition by cast(creation_date as date) 
                       order by creation_date desc) rn
  from tblProducts
  )
select * 
from cte
where rn <= 2

Ես այնքան էլ վստահ չեմ, թե ինչ նկատի ունեք՝ ասելով, որ միայն n ընդհանուր գրառումները կարող են տեղադրվել: Ենթադրաբար ցանկանում եք սահմանափակել աղյուսակի ներդիրների քանակը: Ճանապարհներից մեկը դրա համար top օգտագործելն է -- select top 100 ...

08.12.2014
  • Շնորհակալություն։ Ես տեղափոխվեցի այլ բան և հենց հիմա վերադարձա այս SQL-ին: Նախկինում չէի օգտագործել ROW_NUMBER()-ը և այն աշխատում էր որպես հմայքը: Ես քեզ կողմ ձայն կտայի, բայց ես դրա համբավ չունեմ: 18.12.2014
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..