Questioner

0

Please login or register to vote for this query.

(click on this box to dismiss)

Mythology Meta

Q&A about the site for enthusiasts and scholars of mythology and folklore

/*
  1)Visus postus, kuriem tagos ir ir gan 'html', gan 'css'
  2)Atlasīt vienotā sarakstā visu postu ID, kur ir vai nu top 10 pēc upvote vai top 10 pēc downvote
  3)Atlasīt posta ID un tā pēdējo komentāru
  4)Atlasīt kumulatīvo tendenci laikā pa visām dienām (pēc izveidošanas datuma) šajā gadā top 5 tēmām
    (tags) pēc postu skaita šogad.
      Sagaidāmais rezultāts:
      -)Datums
      -)Tēmas nosaukums
      -)Kumulatīvais postu skaits no gada sākuma
  5)Atlasīt, kura ir biežāka tagu kombinācija pie posta
  6)Uzrakstīt savus vērojumus par problēmām vai dīvainībām datos, kuras pamanītas veicot
    šos uzdevumus.
  7)Uzrakstīt, kādi papildus jautājumi no biznesa viedokļa radās, pildot šos uzdevum
*/


-- 1)Visus postus, kuriem tagos ir ir gan 'html', gan 'css'

SELECT TOP 10
  *
FROM Posts
WHERE Id IN (
    SELECT
      ptg.PostId
    FROM PostTags ptg 
      JOIN Tags tg ON tg.Id = ptg.TagId
    WHERE tg.TagName IN ('css', 'html')
    GROUP BY ptg.PostId
    HAVING COUNT(*) > 1
)
  AND PostTypeId = 1
  
  
-- 2)Atlasīt vienotā sarakstā visu postu ID, kur ir vai nu top 10 pēc upvote vai top 10 pēc downvote


SELECT
  pt.Id
FROM Posts pt
  INNER JOIN (
      SELECT TOP 10
      PostId, COUNT(*) AS Count
      FROM Votes
      WHERE VoteTypeId = 2
      GROUP BY PostId
      ORDER BY COUNT(*) DESC
      ) v ON pt.Id = v.PostId
UNION ALL 
SELECT  
  pt.Id
FROM Posts pt
  INNER JOIN (
      SELECT TOP 10
      PostId, COUNT(*) AS Count
      FROM Votes
      WHERE VoteTypeId = 3
      GROUP BY PostId
      ORDER BY COUNT(*) DESC
      ) v ON pt.Id = v.PostId
 
    
    
-- 3)Atlasīt posta ID un tā pēdējo komentāru


DECLARE @PostId int = ##PostId##

SELECT TOP 1
* 
FROM Posts
WHERE 1=1
   AND PostTypeId = 2
   AND ParentId = @PostId -- 42
ORDER BY 
  CreationDate DESC


-- 4)Atlasīt kumulatīvo tendenci laikā pa visām dienām


CREATE TABLE #postIdRef (PostId int, CreationDate Date)
CREATE TABLE #resultTable (CreationDate Date, TagName nvarchar(35), TagCount int)

INSERT #postIdRef
SELECT 
  ID, 
  CAST(CreationDate AS Date) 
FROM Posts
WHERE 1=1 
  AND CreationDate >= '2024-01-01' -- 490096
  AND PostTypeId = 1 
  
INSERT #resultTable
SELECT
  CreationDate,
  TagName, 
  COUNT(*)
FROM PostTags 
  JOIN #postIdRef ref ON ref.PostId  = PostTags.PostId
  JOIN Tags t ON t.Id = PostTags.TagId
GROUP BY 
  CreationDate, TagName



SELECT 
  CreationDate, 
  TagName,
  CumulativeCount
FROM (
        SELECT
            r1.CreationDate,
            r1.TagName,
            r1.TagCount,
            SUM(r2.TagCount) AS CumulativeCount,
            ROW_NUMBER() OVER (PARTITION BY r1.CreationDate ORDER BY SUM(r2.TagCount) DESC) AS RANK
        FROM #resultTable r1
          JOIN #resultTable r2
              ON r1.CreationDate >= r2.CreationDate AND r1.TagName =r2.TagName
        GROUP BY 
          r1.CreationDate,r1.TagName, r1.TagCount
      ) a
WHERE 
  RANK <= 5
ORDER BY 
  CreationDate, RANK


-- 5)Atlasīt, kura ir biežāka tagu kombinācija pie posta 


SELECT TOP 1 -- python
  Posts.Tags
FROM Posts
WHERE PostTypeId = 1
GROUP BY Posts.Tags
ORDER BY COUNT(*) DESC


-- 6)Uzrakstīt savus vērojumus par problēmām vai dīvainībām datos, kuras pamanītas veicot šos uzdevumus.
/*
  Kā ID tiek sekvenciāli integeri, bet no sekvences iztrūkst daudz ID.
  Relācijas starp citām faktu tabulām ir pātrauktas dažos ID gadījumos.
  Faktu dublēšanās. Pārbaudot dublikātus ir datu nesakritība.
*/

-- 7)Uzrakstīt, kādi papildus jautājumi no biznesa viedokļa radās, pildot šos uzdevumus
/*
  Viena faktu tabula tiek izmantotas dažādiem mērķiem, kuras būtu atdalāmas.
  Indeksu pārklājums arī varētu plašāks. 
  Datu dublēšana pat ja nav datu nesakrītbas ir izdevumi, vai tiem ir kāds pamatojums?
*/

Enter Parameters

Options:
Switch to main site
loading Hold tight while we fetch your results