2019.12.6 LEETCODE SQL

1149 Article Views 2

SELECT DISTINCT viewer_id AS id
FROM Views a
GROUP BY a.view_date, viewer_id
HAVING COUNT(DISTINCT article_id) >= 2
ORDER BY viewer_id

1158 Market Analysis

想要显示 0 就要加 sum(if(,1,0))

Select o.buyer_id,u.join_date,SUM(IF(YEAR(o.order_date)='2019',1,0)) as orders_in_2019
From Orders o 
Join Users u
on o.buyer_id = u.user_id  
Group by o.buyer_id 
ORDER BY o.buyer_id

1164 Product Price at a Given Date

三天 select * from T_news where datediff(day,addtime,getdate())<= 2 and datediff(day,addtime,getdate())>= 0
一周 select * from T_news WHERE (DATEPART(wk, addtime) = DATEPART(wk, GETDATE())) AND (DATEPART(yy, addtime) = DATEPART(yy, GETDATE()))
注意:此时不能用 datediff 差值为7,因为,datediff只表示间隔数
一月 select * from T_news WHERE (DATEPART(yy, addtime) = DATEPART(yy, GETDATE())) AND (DATEPART(mm, addtime) = DATEPART(mm, GETDATE()))
一季度 select * from T_news where DATEPART(qq, addtime) = DATEPART(qq, GETDATE()) and DATEPART(yy, addtime) = DATEPART(yy, GETDATE())
本周:select * from table where datediff(week,C_CALLTIME,getdate())=0 --C_CALLTIME 为日期字段
本月:select * from table where datediff(Month,C_CALLTIME,getdate())=0 --C_CALLTIME 为日期字段
本季:select * from table where datediff(qq,C_CALLTIME,getdate())=0
前半年1-6,后半年7-12select * from table where datepart(mm,C_CALLTIME)/7 = datepart(mm,getdate())/7

自己写的好难受过不了…

Select p.product_id, new_price as price 
From Products p
WHERE p.change_date <= '2019-08-16'
Group by p.product_id
Having min(datediff(p.change_date,'2019-08-16'))
union 
Select product_id not in 
(
    Select distinct p.product_id
    From Products p
    WHERE p.change_date <= '2019-08-16'

) ,10 as price 
From Products

我要举报!!!这里有BUG !!!
为什么别人的MAX(change_date)好用,我的就不好用!!!为什么!!!

SELECT product_id, new_price AS price
FROM Products
WHERE (product_id, change_date) IN (
                                    SELECT product_id, MAX(change_date)
                                     FROM Products
                                     WHERE change_date <= '2019-08-16'
                                     GROUP BY product_id)

 UNION

 SELECT DISTINCT product_id, 10 AS price
 FROM Products
 WHERE product_id NOT IN (SELECT product_id FROM Products WHERE change_date <= '2019-08-16')

1174 Immediate Food Delievery

通过的猝不及防

SELECT ROUND( (
    SELECT COUNT(*)
    FROM (
        SELECT customer_id,min(order_date) d1,min(customer_pref_delivery_date) d2
        From Delivery 
        Group by customer_id) s 
        Where s.d1 = s.d2) *100 / COUNT(*) ,2)AS immediate_percentage 
FROM(
SELECT customer_id,min(order_date) d1,min(customer_pref_delivery_date) d2
From Delivery 
Group by customer_id)  as s 


1193 每日交易

注意这里可以用date_format(x,’%Y%m’),country
来分组讨论
类似于重采样

select
date_format(trans_date,'%Y-%m') as month,
country,
count(*) as trans_count,
sum(if(state='approved',1,0)) as approved_count,
sum(amount) as trans_total_amount,
sum(if(state='approved',amount,0)) as approved_total_amount
from Transactions t
group by
date_format(trans_date,'%Y-%m'),country
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值