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

Ինչպե՞ս եք ընտրում խմբերը և նրանց բոլոր օգտվողները, որտեղ խմբի առնվազն մեկ օգտատեր այցելել է MySQL-ում վերջին X օրվա ընթացքում:

Ես փորձում եմ ստանալ խմբեր և նրանց բոլոր օգտվողներին, որտեղ խմբի առնվազն մեկ օգտատեր այցելել է առնվազն 14 օրվա ընթացքում, ապա պատվիրել ըստ group_id, user_id: Եթե ​​խումբն ունի միայն 14 օրից մեծ օգտվողներ, այն պետք է ամբողջությամբ անտեսվի:

Ես նաև կցանկանայի հաշվել, թե յուրաքանչյուր խումբ քանի օգտատեր ունի:

Հիմնականում առնվազն մեկ օգտվող ակտիվ է պահում ամբողջ խումբը՝ այցելելով 14 օրվա ընթացքում: Եթե ​​խմբում ոչ ոք չի այցելել այդ ընթացքում, նրանք չեն ցուցադրվում խմբի էջում:

Group Table = groups
+----------+--------------+
| group_id |  group_name  |
+----------+--------------+
|        1 | first_group  |
|        2 | second_group |
|        3 | third_group  |
+----------+--------------+


User Table = users
+---------+-----------+----------+---------------------+
| user_id | user_name | group_id |     last_visit      |
+---------+-----------+----------+---------------------+
|       1 | user1     |        1 | 2017-01-01 12:00:00 |
|       2 | user2     |        3 | 2017-01-01 12:00:00 |
|       3 | user3     |        2 | 2017-01-11 12:00:00 |
|       4 | user4     |        1 | 2017-01-12 12:00:00 |
|       5 | user5     |        3 | 2017-01-12 12:00:00 |
|       6 | user6     |        3 | 2017-01-14 12:00:00 |
+---------+-----------+----------+---------------------+


Desired Output if today's date is 2017-01-16 12:00:00
+----------+-------------+---------+-----------+------------+---------------------+
| group_id | group_name  | user_id | user_name | user_count |     last_visit      |
+----------+-------------+---------+-----------+------------+---------------------+
|        1 | first_group |       1 | user1     |          2 | 2017-01-01 12:00:00 |
|        1 | first_group |       4 | user4     |          2 | 2017-01-12 12:00:00 |
|        3 | third_group |       2 | user2     |          3 | 2017-01-01 12:00:00 |
|        3 | third_group |       5 | user5     |          3 | 2017-01-12 12:00:00 |
|        3 | third_group |       6 | user6     |          3 | 2017-01-14 12:00:00 |
+----------+-------------+---------+-----------+------------+---------------------+

Այն, ինչ հիմա ունեմ: Սա ստանում է օգտվողներին, ովքեր այցելել են վերջին 14 օրվա ընթացքում, բայց այն անտեսում է խմբի մնացած մասը:

SELECT
users.user_id, users.user_name,
groups.group_id, groups.group_name
FROM users, groups
WHERE users.last_visit > NOW() - INTERVAL 14 DAY
AND groups.group_id = users.group_id
ORDER BY groups.group_id, users.user_id
15.02.2017

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


1

Դուք ունեք 2 սխալ.

sers.user_name -> users.user_name

group.group_id = users.user_id -> group.group_id = users.group_id

SELECT
users.user_id, users.user_name,
groups.group_id, groups.group_name
FROM users, groups
WHERE users.last_visit > NOW() - INTERVAL 14 DAY
ORDER BY users.group_id

ընտրեք բոլոր օգտատերերին, ովքեր այցելել են վերջին 14 օրվա ընթացքում՝ պատվիրված օգտատերերի խմբի ID-ներով:

նաև պարզապես կարող եք կատարել foreach group_id հարցում՝ ստուգելու համար, թե արդյոք վերջին 14 օրվա ընթացքում եղել է առնվազն 1 օգտվողի այցելություն, թե ոչ:

15.02.2017
  • Տառասխալներն այժմ ուղղվել են։ Բացի այդ, ձեր տրամադրած հայտարարությունը ինձ տվեց նույն արդյունքները, ինչ իմ սկզբնական հայտարարությունը: 15.02.2017
  • Հետո ի՞նչ խնդիր ունեք։ 15.02.2017
  • Մեր հայտարարությունները ցանկալի արդյունք չեն տալիս: Ես փորձում եմ ստանալ բոլոր օգտատերերին խմբերից, որտեղ խմբի ցանկացած օգտատեր ակտիվ է եղել վերջին 14 օրվա ընթացքում, ինչպես նաև յուրաքանչյուր իրավասու խմբի անդամների թիվը: Մեր հայտարարությունները չեն վերցնում օգտատերերին համապատասխան խմբերում, որոնք չեն այցելել 14 օրվա ընթացքում: 15.02.2017

  • 2

    Ես առաջարկում եմ ձեզ օգտագործել ինքնուրույն միանալը, այն կաշխատի: Ես ուզում եմ որոշակի փոփոխություններ կատարել ձեր հարցում

        SELECT
    users.user_id,distinct(users.user_name),
    groups.group_id, groups.group_name
    FROM `users` 
    left join `users` `group_users` on (`group_users`.`group_id` = `users`.`group_id`)
    left join `groups` on (`users`.`group_id`=`groups`.`group_id`)
    WHERE users.last_visit > NOW() - INTERVAL 14 DAY
    ORDER BY groups.group_id, users.user_id
    

    Հուսով եմ, որ դա անպայման կօգնի ձեզ շնորհակալություն

    15.02.2017
  • Սա ցանկալի արդյունք չտվեց: Վերը նշված հայտարարությամբ ես fetch_assoc սխալներ էի ստանում: Այդ ժամանակվանից ես դիմել եմ հարցումներ օգտագործելու php while ցիկլում: 16.02.2017
  • Նոր նյութեր

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

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

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

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

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

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

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