1498 6

[基础问题] sql小白求助大神帮忙看下这个sql语句需要怎么写 [推广有奖]

  • 0关注
  • 0粉丝

已卖:118份资源

高中生

60%

还不是VIP/贵宾

-

威望
0
论坛币
12170 个
通用积分
19.6449
学术水平
0 点
热心指数
7 点
信用等级
0 点
经验
2066 点
帖子
25
精华
0
在线时间
35 小时
注册时间
2012-5-1
最后登录
2018-9-27

楼主
丫头O(∩_∩)O 发表于 2018-8-28 14:53:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
根据工作量求2018年8月1日-2018年8月31日,有25天以上的到岗,完成订单数量在100以上的id,姓名,到岗天数,订单完成数
QQ截图20180828145131.png

数据是图里这样的,麻烦大神帮忙看下sql语句应该如何写呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:订单完成 订单数量 工作量

沙发
escaflowne1985 在职认证  发表于 2018-8-30 08:30:19
教你下思路:
1.把日期拼起来 变成例如“2018-01-01”这样
2.用DATEDIFF这个函数,具体格式可以参考DATEDIFF(datepart,startdate,enddate),或者自行百度
3.用where确定日期条件范围
4.最后group by id,姓名,到岗天数,订单完成数这几个条件然后having count一下就搞定了
自己多动手,别人给你仍代码过来你永远学不会

藤椅
丫头O(∩_∩)O 发表于 2018-8-30 16:55:14
escaflowne1985 发表于 2018-8-30 08:30
教你下思路:
1.把日期拼起来 变成例如“2018-01-01”这样
2.用DATEDIFF这个函数,具体格式可以参考DATED ...
非常感谢

板凳
kejiayuan0806 在职认证  发表于 2018-8-31 20:04:04
SELECT id,姓名,到岗天数,count(订单id) as 订单数量
FROM TEST1
LEFT JOIN (
SELECT id,count(*) AS 到岗天数 FROM (
SELECT id,concat(年,月,日) AS 到岗日期 FROM TEST1)
WHERE 到岗日期 BETWEEN '2018-8-1' AND '2018-8-31'
GROUP BY id) AS a ON TEST1.id=a.id
GROUP BY TEST1.id
HAVING 订单数量>100;

报纸
escaflowne1985 在职认证  发表于 2018-9-7 16:34:12
自己多尝试 不要怕错

地板
guzhentiancai 发表于 2024-11-12 14:38:01
select
a.`司机id`,
a.`司机名称`,
count(distinct a.`日`) as `到岗天数`,
count(distinct a.`订单id`) as `订单完成数`
from 表名 a
where a.`年`='2018'
and a.`月`='8'
group by
a.`司机id`,
a.`司机名称`having count(distinct a.`日`) >25

7
flyman150 发表于 2025-2-7 15:48:26
SELECT
    e.id,
    e.name,
    a.attendance_days AS 到岗天数,
    o.order_count AS 订单完成数
FROM employee e
-- 步骤1:计算员工在2018年8月的到岗天数
INNER JOIN (
    SELECT
        employee_id,
        COUNT(DISTINCT date) AS attendance_days
    FROM attendance
    WHERE date BETWEEN '2018-08-01' AND '2018-08-31'
    GROUP BY employee_id
    HAVING COUNT(DISTINCT date) > 25
) a ON e.id = a.employee_id
-- 步骤2:计算员工在2018年8月完成的订单数
INNER JOIN (
    SELECT
        employee_id,
        COUNT(*) AS order_count
    FROM orders
    WHERE order_date BETWEEN '2018-08-01' AND '2018-08-31'
      AND status = 'completed'
    GROUP BY employee_id
    HAVING COUNT(*) > 100
) o ON e.id = o.employee_id;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-20 07:50