Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 和计数(bill_id)=2且计数(票据id)=1时,则为1 结束)作为额定值2, (如果总和(总价)>=5000,则为5 当总和(总价)>=3000且总和(总价)=2000且总和(总价)=1000且总和(总价)_Mysql_Select - Fatal编程技术网

Mysql 和计数(bill_id)=2且计数(票据id)=1时,则为1 结束)作为额定值2, (如果总和(总价)>=5000,则为5 当总和(总价)>=3000且总和(总价)=2000且总和(总价)=1000且总和(总价)

Mysql 和计数(bill_id)=2且计数(票据id)=1时,则为1 结束)作为额定值2, (如果总和(总价)>=5000,则为5 当总和(总价)>=3000且总和(总价)=2000且总和(总价)=1000且总和(总价),mysql,select,Mysql,Select,试试这个。它比上面的答案快。不需要使用连接。选中此项在输出样本中,根据样本数据和查询,第三行的客户id错误,应为3在输出样本中,根据样本数据和查询,第三行的客户id错误,应为3 CREATE TABLE IF NOT EXISTS `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `customer_id` int(11) NOT NULL, `restaurant_id` int(11) NOT NULL, `bill_id` i

试试这个。它比上面的答案快。不需要使用连接。选中此项

在输出样本中,根据样本数据和查询,第三行的客户id错误,应为3在输出样本中,根据样本数据和查询,第三行的客户id错误,应为3
CREATE TABLE IF NOT EXISTS `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `customer_id` int(11) NOT NULL,
  `restaurant_id` int(11) NOT NULL,
  `bill_id` int(11) NOT NULL,
  `source_id` int(1) NOT NULL,
  `order_medium_id` int(11) NOT NULL,
  `purchase_method` varchar(255) NOT NULL,
  `totalamount` int(11) NOT NULL,
  `delivery_charg` int(11) NOT NULL,
  `discount` int(11) NOT NULL,
  `vat` int(11) NOT NULL,
  `total_price` int(11) NOT NULL DEFAULT '0',
  `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `customer_id` (`customer_id`),
  KEY `source_id` (`source_id`),
  KEY `restaurant_id` (`restaurant_id`),
  KEY `bill_id` (`bill_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;

--
-- Dumping data for table `orders`
--

INSERT INTO `orders` (`id`, `customer_id`, `restaurant_id`, `bill_id`, `source_id`, `order_medium_id`, `purchase_method`, `totalamount`, `delivery_charg`, `discount`, `vat`, `total_price`, `date_created`) VALUES
(1, 1, 1, 1, 1, 0, 'cash', 1600, 0, 0, 0, 1600, '2016-05-29 13:05:40'),
(2, 2, 1, 2, 2, 1, 'cash', 1820, 0, 0, 0, 1820, '2016-06-27 07:21:25'),
(4, 1, 1, 3, 3, 0, 'cash', 1770, 0, 0, 0, 1770, '2016-05-31 13:05:56'),
(5, 3, 1, 4, 2, 1, 'cash', 1300, 0, 0, 0, 1300, '2016-06-27 07:21:31'),
(6, 1, 1, 5, 1, 0, 'cash', 950, 0, 0, 0, 950, '2016-06-02 13:06:15'),
(7, 1, 1, 6, 1, 0, 'cash', 1640, 0, 0, 0, 1640, '2016-06-03 13:06:24'),
(8, 1, 1, 7, 2, 2, 'cash', 1600, 0, 0, 0, 1600, '2016-06-27 07:21:36'),
(9, 1, 1, 8, 2, 2, 'cash', 1575, 0, 0, 0, 1575, '2016-06-27 07:21:40'),
(10, 1, 1, 9, 3, 0, 'cash', 1125, 0, 0, 0, 1125, '2016-06-06 13:06:48'),
(11, 1, 1, 10, 2, 3, 'cash', 1920, 0, 0, 0, 1920, '2016-06-27 07:21:51');
1. customers who ordered in last 2 week then give ratingflag 5
2. customers who ordered between 2 weeks to 4 week then give ratingflag 3
3. customers who ordered between 4 weeks to 8 week then give ratingflag 2
and so on.
1. Customer who ordered more then 5 in a month then give rating 5  
2. Customer who ordered less then 5 and more then in a month then 4 give rating 4  
and so on.
1. Customer who ordered more then 5000 rs in a month then give rating 5  
2. Customer who ordered less then 5000 rs and more then in a month then 4000 give rating 4  
and so on.
select o.customer_id,
       (case when max(date_created) >= date_sub(now(), interval 2 week) then 5
             when max(date_created) >= date_sub(now(), interval 4 week) then 4
             when max(date_created) >= date_sub(now(), interval 8 week) then 3
             when max(date_created) >= date_sub(now(), interval 10 week) then 2
             when max(date_created) >=  date_sub(now(), interval 12 week) then 1
        end) as rating 
from orders o where o.restaurant_id = 1
group by o.customer_id;
customer_id rating
1            5
2            5
5            5
select o.customer_id,
       (case when count(bill_id) >= 6 then 5
             when count(bill_id) >= 4  and count(bill_id) < 6 then 4
             when count(bill_id) >= 3  and count(bill_id) < 4 then 3
             when count(bill_id) >= 2  and count(bill_id) < 3 then 2
             when count(bill_id) >= 1 then 1
        end) as rating
from orders o where o.restaurant_id = 1
group by o.customer_id
customer_id rating
1            5
2            1
5            1
select o.customer_id,
       (case when sum(total_price) >= 5000 then 5
             when sum(total_price) >= 3000  and sum(total_price) < 5000 then 4
             when sum(total_price) >= 2000  and sum(total_price) < 3000 then 3
             when sum(total_price) >= 1000  and sum(total_price) < 2000 then 2
             when sum(total_price) < 1000  then 1
        end) as rating
from orders o where o.restaurant_id = 1
group by o.customer_id
customer_id rating
1            5
2            2
5            2
customer_id      R1     R2       R3
    1            5      5        5
    2            5      1        2
    3            5      1        2
SELECT * FROM (
select o.customer_id,
       (case when max(date_created) >= date_sub(now(), interval 2 week) then 5
             when max(date_created) >= date_sub(now(), interval 4 week) then 4
             when max(date_created) >= date_sub(now(), interval 8 week) then 3
             when max(date_created) >= date_sub(now(), interval 10 week) then 2
             when max(date_created) >=  date_sub(now(), interval 12 week) then 1
        end) as R1 
from orders o where o.restaurant_id = 1
group by o.customer_id) AS lastPurchase
LEFT JOIN 
(
select o.customer_id,
       (case when count(bill_id) >= 6 then 5
             when count(bill_id) >= 4  and count(bill_id) < 6 then 4
             when count(bill_id) >= 3  and count(bill_id) < 4 then 3
             when count(bill_id) >= 2  and count(bill_id) < 3 then 2
             when count(bill_id) >= 1 then 1
        end) as R2
from orders o where o.restaurant_id = 1
group by o.customer_id
) AS orderQuery USING(customer_id)
LEFT JOIN
(
select o.customer_id,
       (case when sum(total_price) >= 5000 then 5
             when sum(total_price) >= 3000  and sum(total_price) < 5000 then 4
             when sum(total_price) >= 2000  and sum(total_price) < 3000 then 3
             when sum(total_price) >= 1000  and sum(total_price) < 2000 then 2
             when sum(total_price) < 1000  then 1
        end) as R3
from orders o where o.restaurant_id = 1
group by o.customer_id
)  AS totalTransactions  USING(customer_id)
select o.customer_id,
       (case when max(date_created) >= date_sub(now(), interval 2 week) then 5
             when max(date_created) >= date_sub(now(), interval 4 week) then 4
             when max(date_created) >= date_sub(now(), interval 8 week) then 3
             when max(date_created) >= date_sub(now(), interval 10 week) then 2
             when max(date_created) >=  date_sub(now(), interval 12 week) then 1
        end) as rating1, 
        (case when count(bill_id) >= 6 then 5
             when count(bill_id) >= 4  and count(bill_id) < 6 then 4
             when count(bill_id) >= 3  and count(bill_id) < 4 then 3
             when count(bill_id) >= 2  and count(bill_id) < 3 then 2
             when count(bill_id) >= 1 then 1
        end) as rating2,
        (case when sum(total_price) >= 5000 then 5
             when sum(total_price) >= 3000  and sum(total_price) < 5000 then 4
             when sum(total_price) >= 2000  and sum(total_price) < 3000 then 3
             when sum(total_price) >= 1000  and sum(total_price) < 2000 then 2
             when sum(total_price) < 1000  then 1
        end) as rating3
from orders o where o.restaurant_id = 1
group by o.customer_id