Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.15 KB | None | 0 0
  1. -- SCHEMA
  2. CREATE TABLE users (
  3.   id INTEGER PRIMARY KEY
  4. );
  5.  
  6. CREATE TABLE posts (
  7.   user_id INTEGER,
  8.   kind VARCHAR(40) -- only 'article', 'promotion', 'link', 'image',
  9. );
  10.  
  11. INSERT INTO users(id) VALUES (1);
  12. INSERT INTO users(id) VALUES (2);
  13.  
  14. INSERT INTO posts(user_id, kind) VALUES (1, 'article');
  15. INSERT INTO posts(user_id, kind) VALUES (1, 'article');
  16. INSERT INTO posts(user_id, kind) VALUES (1, 'promotion');
  17. INSERT INTO posts(user_id, kind) VALUES (1, 'image');
  18. INSERT INTO posts(user_id, kind) VALUES (1, 'image');
  19. INSERT INTO posts(user_id, kind) VALUES (1, 'link');
  20.  
  21. INSERT INTO posts(user_id, kind) VALUES (2, 'link');
  22. INSERT INTO posts(user_id, kind) VALUES (2, 'link');
  23.  
  24. -- QUERY
  25.  
  26. SELECT u.id,
  27. COUNT(pa.user_id) AS article_count,
  28. COUNT(pp.user_id) AS promotion_count,
  29. COUNT(pl.user_id) AS promotion_link,
  30. COUNT(pi.user_id) AS promotion_image
  31. FROM users u
  32. LEFT JOIN posts pa ON (pa.user_id = u.id) AND pa.kind = 'article'
  33. LEFT JOIN posts pp ON (pp.user_id = u.id) AND pp.kind = 'promotion'
  34. LEFT JOIN posts pl ON (pp.user_id = u.id) AND pl.kind = 'link'
  35. LEFT JOIN posts pi ON (pp.user_id = u.id) AND pi.kind = 'image'
  36. GROUP BY u.id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement