楼主: 李浩泉
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] LC Python 刷题笔记 有志者事竟成

   
🔗
cythia123 2020-8-24 07:11:45 | 只看该作者
全局:
跟着楼主一起刷 几天没看 楼主设了密码了。。。
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
 楼主| 李浩泉 2020-8-30 23:31:23 | 只看该作者
本帖为密码帖 ,请输入密码 
回复

使用道具 举报

🔗
 楼主| 李浩泉 2020-8-31 06:28:22 | 只看该作者
本帖为密码帖 ,请输入密码 
回复

使用道具 举报

🔗
jliu 2020-8-31 23:01:15 | 只看该作者
全局:
开篇总结的太好了,靠刷题逆天改命,就是这么简单粗暴
回复

使用道具 举报

🔗
 楼主| 李浩泉 2020-8-31 23:18:10 | 只看该作者
全局:
2020-08 BIE 新题

  1. /*

  2. orders: order_id, customer_id, item_id, item_price, item_quantity, order_datetime
  3. customer: customer_id, name, address, zipcode,....
  4. item: item_id, category

  5. Q1: item quantity sold yesterday

  6. */


  7. SELECT
  8.   item_id,
  9.   SUM(item_quantity) AS quantity
  10. FROM orders
  11. WHERE dateadd(day,1,order_datetime) = GETDATE()
  12. GROUP BY item_id
复制代码


回复

使用道具 举报

🔗
 楼主| 李浩泉 2020-8-31 23:21:52 | 只看该作者
全局:
  1. /*

  2. orders: order_id, customer_id, item_id, item_price, item_quantity, order_datetime
  3. customer: customer_id, name, address, zipcode,....
  4. item: item_id, category

  5. Q2: return customer id who bought item yesterday but didn't buy item today

  6. */


  7. SELECT
  8.   customer_id
  9. FROM orders
  10. WHERE dateadd(day,1,order_datetime) = GETDATE()
  11.       AND customer_id NOT IN
  12.           (
  13.           SELECT
  14.             customer_id
  15.           FROM orders
  16.           WHERE order_datetime = GETDATE()
  17.           )
复制代码

回复

使用道具 举报

🔗
 楼主| 李浩泉 2020-8-31 23:37:04 | 只看该作者
全局:
  1. /*

  2. Q3: calculate each category item quantity sold by three types of item price : item_price <20, item price between 20 and 50, item price>50
  3. results should be: category |unit0-20 |unit20-50 | unit50

  4. */


  5. WITH CTE AS
  6. (
  7.   SELECT
  8.     category,
  9.     item.item_id,
  10.     SUM(ISNULL(item_quantity,0)) AS quantity
  11.   FROM item LEFT JOIN orders ON item.item_id = orders.item_id
  12.   GROUP BY category,item.item_id,
  13. )

  14. SELECT
  15.   category,
  16.   SUM(CASE WHEN quantity < 20 THEN 1 ELSE 0 END) AS 'unit0-20',
  17.   SUM(CASE WHEN quantity < 50 AND quantity >= 20 THEN 1 ELSE 0 END) AS 'unit20-50',
  18.   SUM(CASE WHEN quantity >= 50 THEN 1 ELSE 0 END) AS 'unit50'
  19. FROM CTE
复制代码

回复

使用道具 举报

🔗
 楼主| 李浩泉 2020-8-31 23:43:20 | 只看该作者
全局:
  1. /*

  2. Q4: return top 5 zipcode based on revenue per customer

  3. */


  4. WITH CTE AS
  5. (
  6.   SELECT
  7.     zipcode,
  8.     DENSE_RANK() OVER (PARTITION BY zipcode ORDER BY SUM(ISNULL(item_quantity,0)*item_price) DESC) AS RK
  9.   FROM customer LEFT JOIN orders ON customer.customer_id = orders.customer_id
  10.   GROUP BY zipcode
  11. )

  12. SELECT zipcode FROM CTE WHERE RK <= 5
复制代码

回复

使用道具 举报

🔗
 楼主| 李浩泉 2020-8-31 23:55:25 | 只看该作者
全局:
本帖最后由 李浩泉 于 2020-9-1 00:02 编辑
  1. /*

  2. Q5: return customer_id whose first order value > second order value

  3. */


  4. WITH CTE AS
  5. (
  6.   SELECT
  7.     customer_id,
  8.     SUM(ISNULL(item_quantity,0)*item_price) AS value,
  9.     DENSE_RANK() OVER (PARTITION BY customer_id ORDER BY SUM(ISNULL(item_quantity,0)*item_price) DESC) AS RK
  10.   FROM orders
  11.   GROUP BY customer_id
  12. )

  13. SELECT
  14.   customer_id
  15. FROM (
  16.       SELECT
  17.       customer_id,
  18.       CASE WHEN RK = 1 THEN AVG(value) ELSE 0 END AS first_order_value,
  19.       CASE WHEN RK = 2 THEN AVG(value) ELSE 0 END AS second_order_value
  20.       FROM CTE
  21.       GROUP BY customer_id
  22.     ) T
  23. WHERE first_order_value > second_order_value
复制代码


Q6. Tableau: data blending和data joining的区别

I do not use data blending in Tableau at all. The best practise is to make T-SQL and verify all joins out of the tableau. Once the data output is confirmed correct, deploy the T-SQL directly into the tableau. The data blending is a default function to allow users to merge data when the joins does not exist or hard to be made. The performance of data blending is super slow and not recomended when the data size is large.


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表