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

Ստացեք գրառում վերջին ամսաթվով/ժամով

Ես ունեմ այս սեղանի դասավորությունը: Ես ուզում եմ ստանալ «USER1» գրառումը ամենավերջին ամսաթվի/ժամային կնիքով:

comments_sk case_sk comments    create_user_id  create_date
1           68200   test 1        USER1           2/11/17 11:00
1           68200   test 2        USER1           2/4/17 14:54
1           68200   test 3        USER2           12/30/16 12:37
1           8200    test 4        USER2           12/14/16 14:23
1           68200   test 5        USER3           12/13/16 9:16
1           68200   test 6        USER2           12/8/16 10:38
1           68200   test 7        USER3           12/2/16 10:58
1           68200   test 8        USER2           12/1/16 11:21
1           68200   test 9        USER2           11/8/16 13:36

Ես փորձել եմ այս հարցումները, բայց USER1-ի բոլոր գրառումները ցուցադրվում են:

SELECT DISTINCT comments_sk, case_sk, CAST(comments AS varchar) AS comments, create_user_id, create_date
FROM         comments AS s
WHERE     (s.case_sk = 68200) AND (s.create_user_id = 'USER1') AND (s.create_date =
                          (SELECT     MAX(s1.create_date) AS cdate
                            FROM          comments AS s1
                            WHERE      (s1.comments_sk = s.comments_sk)))
GROUP BY comments_sk, case_sk, CAST(comments AS varchar), create_user_id, create_date
ORDER BY create_date DESC
SELECT     s.comments_sk, s.case_sk, max(CAST(s.comments AS varchar)) AS comments, s.create_user_id, s.create_date
FROM         comments AS s INNER JOIN
                          (SELECT    comments_sk, case_sk, max(CAST(comments AS varchar)) AS comments, create_user_id, MAX(create_date) AS cdate
                            FROM          comments
                            GROUP BY comments_sk, case_sk, CAST(comments AS varchar), create_user_id, maint_user_id, maint_date, comment_type_sk) AS s1 ON 
                      s.case_sk = s1.case_sk AND s.create_date = s1.cdate
WHERE     (s.case_sk = 68200)
GROUP BY s.comments_sk, s.case_sk, CAST(s.comments AS varchar), s.create_user_id, s.create_date, s.comment_type_sk
HAVING      (s.create_user_id = 'USER1')
ORDER BY s.create_date DESC
SELECT     comments_sk, case_sk, CAST(comments AS varchar) AS comments, create_user_id, max(create_date)
FROM         comments AS s
WHERE     EXISTS
                          (SELECT     comments_sk, case_sk, CAST(comments AS varchar) AS comments, create_user_id, MAX(create_date) AS cdate
                            FROM          comments AS s1
                            WHERE      (s1.case_sk = s.case_sk) AND (s1.comments_sk = s.comments_sk)
                            GROUP BY comments_sk, case_sk, CAST(comments AS varchar), create_user_id, maint_user_id, maint_date, comment_type_sk
                            HAVING      (s.create_date = MAX(s1.create_date))) AND (s.create_user_id = 'USER1') AND (s.case_sk = 68200)
GROUP BY comments_sk, case_sk, CAST(comments AS varchar), create_user_id, create_date, comment_type_sk
ORDER BY create_date DESC

  • Ո՞ր DBMS-ն եք օգտագործում: Պոստգրե՞ս: Oracle? 14.02.2017

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


1

Օգտագործելով «Թոփ 1» և նվազման կարգը, դուք պետք է կարողանաք ստանալ այն, ինչ ցանկանում եք: Փորձեք այս:

SELECT top 1 comments_sk, case_sk, CAST(comments AS varchar) AS comments, create_user_id, create_date
FROM         comments AS s
WHERE     (s.case_sk = 68200) AND (s.create_user_id = 'USER1') 
GROUP BY comments_sk, case_sk, CAST(comments AS varchar), create_user_id, create_date
ORDER BY create_date DESC

ԹԱՐՄԱՑՆԵԼ

Ելնելով ձեր մեկնաբանությունից՝ ես առաջարկում եմ օգտագործել CTE՝ օգտվողի համար վերջին մեկնաբանությունը ստանալու համար, այնուհետև այն կապել մեկնաբանություններ աղյուսակին՝ իրական մեկնաբանությունը ստանալու համար: Սա օրինակ է, թե ինչպես կարելի է գրել հարցումը: Ամենայն հավանականությամբ, դուք ցանկանում եք փոփոխել WHERE կետը և կոշտ կոդավորված արժեքների փոխարեն օգտագործել պարամետրեր.

; with _cte as (
    SELECT DISTINCT comments_sk, case_sk, create_user_id, Max(create_date) as lastCommentDate
    FROM         comments AS s
    WHERE     s.create_user_id = 'USER1'
    GROUP BY comments_sk, case_sk, create_user_id
)

SELECT  _cte.comments_sk, _cte.case_sk, CAST(comments AS varchar) AS comments, _cte.create_user_id, _cte.lastCommentDate
FROM    comments AS s
        inner join _cte on s.create_date = _cte.lastCommentDate and s.create_user_id = _cte.create_user_id and s.case_sk = _cte.case_sk
WHERE     (s.case_sk = 68200) AND (s.create_user_id = 'USER1') 
13.02.2017
  • Feryal, շնորհակալություն արձագանքի համար, բայց top1-ը չի աշխատի, քանի որ հարցումը կօգտագործվի բազմաթիվ case_sk-ի դեմ: Ես պարզապես օգտագործել եմ 68200 որպես օրինակ: Ներողություն եմ խնդրում սկզբնական գրառման մեջ չնշելու համար։ 14.02.2017
  • Արդյո՞ք թարմացման բաժնում նոր հարցումն աշխատում է ձեզ համար: 15.02.2017
  • այո, բայց միայն կոնկրետ դեպքի համար։ Ես կարողացա պարզել. Շնորհակալություն Ձեր արձագանքի համար: 16.02.2017
  • Նոր նյութեր

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

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

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

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

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

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

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