sql-test

//sql语句请教查询结果相加,表别名。
sql描述:同一张table里面,某一字段值确定相同,另一字段值确定的情况下。

 

 

SELECT COUNT(*) AS TOTAL,CM_WGT
FROM HZW_CM 
WHERE CM_WGT=10 AND  PRODUCT_CTG IN('BB煲','DHA')

 --

 

SELECT NAMES,SUM(sale) AS sale 
FROM 
(SELECT NAMES, sale  FROM db1
UNION 
SELECT NAMES, sale  FROM db2
)
GROUP BY NAMES
 

 

排序,取值:
 SELECT

  COUNT(*) AS TOTALNUM
FROM HZW_OV
WHERE PRODUCT_NAME LIKE '%45%'
ORDER BY PRODUCT_ID DESC;

--

SELECT
  SUM(CASE WHEN consumer_bhv='B' THEN 1 ELSE 0 END) AS B_num
FROM dba.transactions;

 

--Test result;
select top 50 * from hzw_cm;

 

 

-- 求出 表REC_1_PRDCT_INFO 中各个user_id下的各个ctg中价格最高的商品集
SELECT
  a.user_id,
  a.product_ctg,
  a.max_price,
  b.product_name,
  b.product_id
FROM (SELECT
        user_id,
        product_ctg,
        MAX(product_price)    max_price
      FROM REC_1_PRDCT_INFO
      GROUP BY user_id,product_ctg) AS a,
  REC_1_PRDCT_INFO AS b
WHERE a.user_id = b.user_id
    AND a.product_ctg = b.product_ctg
    AND a.max_price = b.product_price

 

 

-- DISTINCT
SELECT DISTINCT user_id 
FROM REC_1_PRDCT_INFO

-- 删除表
DROP TABLE TEMP_TRANSACTIONS

-- 删除全表数据
DELETE FROM ADS_SITE_STYLE

SELECT COUNT(*)
FROM TRANSACTIONS
WHERE Rec_date BETWEEN '2012-08-01' AND '2012-08-10'

-- mysql CONCAT 函数【连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL】
SELECT  CONCAT(nickname,ads_url_join) AS users,nickname 
FROM RG_USERS

-- mysql LIMIT 函数
SELECT *
FROM TRANSACTIONS
LIMIT 2,9

SELECT
  user_id,
  product_ctg,
  product_name,
  product_price
FROM REC_1_PRDCT_INFO
WHERE product_price IN(SELECT
                         MAX(product_price) AS product_price
                       FROM REC_1_PRDCT_INFO
                       GROUP BY user_id,product_ctg)


-- 求出 TRANSACTIONS 中各个user_id下的成单量最多的前5件商品集,包含各个商品的成单总数量
SELECT
  user_id,
  product_ctg,
  COUNT(*)
FROM TRANSACTIONS
WHERE consumer_bhv = 'B'
GROUP BY user_id	
	
-- 求出 表REC_1_PRDCT_INFO 中各个user_id下的各个ctg中价格最高的商品集
SELECT
  a.user_id,
  a.product_ctg,
  a.max_price,
  b.product_name,
  b.product_id
FROM (SELECT
        user_id,
        product_ctg,
        MAX(product_price)    max_price
      FROM REC_1_PRDCT_INFO
      GROUP BY user_id,product_ctg) AS a,
  REC_1_PRDCT_INFO AS b
WHERE a.user_id = b.user_id
    AND a.product_ctg = b.product_ctg
    AND a.max_price = b.product_price
GROUP BY a.user_id, a.product_ctg,a.max_price

-- INNER JOIN 
SELECT
  b.user_id,
  a.nickname,
  a.user_url,
  b.pctg_wgt
FROM REC_1_USER_WGT AS b
  INNER JOIN RG_USERS AS a
    ON a.rg_client_id = b.user_id
ORDER BY user_id DESC

-- RIGHT JOIN
SELECT
  a.nickname,
  a.user_url,
  b.pctg_wgt,
  b.user_id
FROM REC_1_USER_WGT AS b
  RIGHT JOIN RG_USERS AS a
    ON a.rg_client_id = b.user_id
ORDER BY user_id DESC

-- LEFT JOIN
SELECT
  a.nickname,
  a.user_url,
  b.pctg_wgt,
  b.user_id
FROM REC_1_USER_WGT AS b
  LEFT JOIN RG_USERS AS a
    ON a.rg_client_id = b.user_id
ORDER BY user_id DESC

-- CROSS JOIN
SELECT
  b.user_id,
  a.nickname,
  a.user_url,
  b.pctg_wgt
FROM REC_1_USER_WGT AS b
  CROSS JOIN RG_USERS AS a
WHERE a.rg_client_id = b.user_id
ORDER BY user_id DESC

-- UNION;  UNION ALL;[UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。]
-- [默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。]
SELECT user_id FROM REC_1_USER_WGT
UNION 
SELECT user_id FROM REC_1_PRDCT_INFO

-- IS NULL 和 IS NOT NULL 操作符。
SELECT *
FROM RG_USERS
WHERE ads_url_join IS NULL

SELECT *
FROM RG_USERS
WHERE ads_url_join IS NOT NULL


-- 聚合函数[AVG();COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入);COUNT(*) 函数返回表中的记录数;COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目;
-- 【MAX();MIN();SUM 函数返回数值列的总数(总额);;;;】
SELECT
  AVG(user_max_sub_num) AS subAverage
FROM REPORT_USERS

SELECT *
FROM REPORT_USERS
WHERE user_max_sub_num < (SELECT
                            AVG(user_max_sub_num) AS subAverage
                          FROM REPORT_USERS)
                          
SELECT
  COUNT(product_var1)
FROM REC_1_PRDCT_INFO

SELECT
  COUNT(DISTINCT product_var1)
FROM REC_1_PRDCT_INFO

SELECT
  COUNT(DISTINCT user_id)
FROM REC_1_PRDCT_INFO

SELECT MAX(rec_charge_rate) FROM REC_1_PRDCT_INFO
SELECT MIN(rec_charge_rate) FROM REC_1_PRDCT_INFO
SELECT SUM(rec_charge_rate) FROM REC_1_PRDCT_INFO


-- GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组
SELECT user_id,SUM(rec_charge_rate) AS num FROM REC_1_PRDCT_INFO
GROUP BY user_id

SELECT user_id,product_var1,SUM(rec_charge_rate) AS num FROM REC_1_PRDCT_INFO
GROUP BY user_id,product_var1


-- HAVING 子句[在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用]
-- [查找订单总金额少于 100 的客户。]
SELECT
  consumer_id,
  SUM(product_price) 
FROM TRANSACTIONS
GROUP BY consumer_id
HAVING SUM(product_price) < 100

SELECT
  consumer_id,
  SUM(product_price) AS total
FROM TRANSACTIONS
WHERE rec_date='2012-08-01'
GROUP BY consumer_id
HAVING total BETWEEN 1 AND 100


SELECT
  Customer,
  SUM(OrderPrice)
FROM Orders
WHERE Customer = 'Bush'
     OR Customer = 'Adams'
GROUP BY Customer
HAVING SUM(OrderPrice) > 1500

-- UCASE 函数把字段的值转换为大写;LCASE 函数把字段的值转换为小写
SELECT UCASE(user_url) 
FROM RG_USERS	

SELECT LCASE(user_url) 
FROM RG_USERS	

-- MID 函数用于从文本字段中提取字符
SELECT
  MID(user_url,1,3) AS single
FROM RG_USERS

-- ROUND 函数用于把数值字段舍入为指定的小数位数。[ 四舍五入,舍入为最接近的整数]
SELECT
  ROUND(product_price) 
FROM REC_1_PRDCT_INFO
WHERE product_price =582.40 OR product_price =4.90 OR product_price =93.50


-- myql 时间函数
SELECT NOW()

SELECT YEAR('2003-03-31')+5 AS c_year;

SELECT
  DAYNAME('2000-01-01') AS week_day;

SELECT
  DAYOFYEAR('2000-12-31');

SELECT
  DATE_ADD('2003-07-13', INTERVAL 14 DAY);

SELECT
  'The number of CTG is :',
  COUNT(*)
FROM RG_USERS

 

--

CREATE DATABASE rec

DROP TABLE temp_cid_mapping

SELECT
  COUNT(*)
FROM rec_1_prdct_info

SELECT
  COUNT(*)
FROM temp_curr_trans

-- group by; order by ..asc
SELECT
  a.user_id,
  COUNT(*)  AS total
FROM rec_1_user_wgt a,
  rec_1_prdct_info b
WHERE a.user_id = b.user_id
GROUP BY user_id
ORDER BY total DESC

-- INNER JOIN..ON; WHERE; group by; order by ..asc
SELECT
  a.user_id,
  COUNT(*)  AS total
FROM (rec_1_user_wgt AS a
   INNER JOIN rec_1_prdct_info AS b
     ON a.user_id = b.user_id)
  INNER JOIN temp_curr_trans AS c
    ON b.product_url = c.session_url
WHERE b.product_var1 IS NOT NULL
GROUP BY user_id
ORDER BY total DESC

-- 两张表联合join
-- INNER JOIN; USING; group by; order by ..asc
SELECT
 user_id ,COUNT(*)  AS total,CONCAT(user_id,product_url)
  FROM rec_1_user_wgt b
  INNER JOIN rec_1_prdct_info a
    USING (user_id)
GROUP BY user_id
ORDER BY total DESC

SELECT DISTINCT user_id FROM temp_curr_trans

-- 三张表联合join
SELECT
  a.user_id,
  COUNT(*)  AS total
FROM (temp_curr_trans AS c
   INNER JOIN rec_1_prdct_info AS b
     ON b.product_url = c.session_url)
  INNER JOIN rec_1_user_wgt AS a
    ON a.user_id = b.user_id
WHERE b.product_var1 IS NOT NULL
GROUP BY user_id
ORDER BY total DESC

-- 两张表联合left outer join on
-- INNER JOIN; USING; group by; order by ..asc
SELECT
 user_id ,COUNT(*)  AS total,CONCAT(user_id,product_url)
  FROM rec_1_user_wgt b
  LEFT OUTER JOIN rec_1_prdct_info a
    USING (user_id)
GROUP BY user_id
ORDER BY total DESC
 

---------------

package com.bjsxt.servlet; import com.bjsxt.entity.User; import com.bjsxt.service.UserService; import com.bjsxt.service.impl.UserServiceImpl; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.IOException; import java.net.URLEncoder; import java.sql.Date; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class UserServlet extends BaseServlet { // @Override // protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // //解决POST表单的中文乱码问题 // request.setCharacterEncoding("utf-8"); // //接收method属性的值 // String methodName = request.getParameter("method"); // // //根据method属性的值调用相应的方法 // if("login".equals(methodName)){ // this.login(request,response); // }else if("register".equals(methodName)){ // this.register(request,response); // }else if("logout".equals(methodName)){ // this.logout(request,response); // } // // } public void show(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取表单的数据 String userId = request.getParameter("userId"); if(userId == null){ userId = ""; } String strAge = request.getParameter("minAge"); int minAge = 0; try{ minAge = Integer.parseInt(strAge); //"12" "abc" }catch(NumberFormatException e){ e.printStackTrace(); } //调用业务层完成查询操作 UserService userService = new UserServiceImpl(); //List<User> userList = userService.findAll(); List<User> userList = userService.find(userId,minAge); //List<User> userList = null; //List<User> userList = new ArrayList<User>(); //跳转到show.jsp显示数据 request.setAttribute("userId",userId); request.setAttribute("minAge",strAge); request.setAttribute("ulist",userList); request.getRequestDispatcher("/admin/show.jsp").forward(request,response); } public void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //结束当前的session request.getSession().invalidate(); //跳转回登录页面 response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); } public void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //request.setCharacterEncoding("utf-8"); //1.接收来自视图层的表单数据 String userId = request.getParameter("userId"); String realName = request.getParameter("realName"); String pwd = request.getParameter("pwd"); String rePwd = request.getParameter("repwd"); int age = Integer.parseInt(request.getParameter("age"));// "23" String [] hobbyArr = request.getParameterValues("hobby"); String strDate = request.getParameter("enterDate");//"1999-12-23" Date enterDate = Date.valueOf(strDate); //util.Date SimpleDateFormat //判断两次密码是否相同 if(pwd == null || !pwd.equals(rePwd)){ request.setAttribute("error","两次密码必须相同"); request.getRequestDispatcher("/admin/register.jsp").forward(request,response); return; } //2.调用业务层完成注册操作并返回结果 User user = new User(userId,realName,pwd,age, Arrays.toString(hobbyArr),enterDate); UserService userService = new UserServiceImpl(); int n = userService.register(user); //3.根据结果进行页面跳转 if(n>0){ response.sendRedirect(request.getContextPath()+"/admin/login.jsp"); }else{ request.setAttribute("error","注册失败"); request.getRequestDispatcher("/admin/register.jsp").forward(request,response); } } public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //解决POST表单的中文乱码问题 //request.setCharacterEncoding("utf-8"); //获取用户名和密码 request 内建对象 请求 String username = request.getParameter("username"); String password = request.getParameter("password"); String rememberme = request.getParameter("rememberme"); //调用下一层判断登录是否成功,并返回结果 //进行服务器端的表单验证 if(username ==null || "".equals(username)){ request.setAttribute("error","用户名不能为空JSP"); request.getRequestDispatcher("/admin/login.jsp").forward(request,response); return; } if (username.length()<=6){ request.setAttribute("error","用户名长度必须大于6JSP"); request.getRequestDispatcher("/admin/login.jsp").forward(request,response);//后面语句还会执行 return; //后面的语句不再执行 } // boolean flag = false;//默认失败 // if(username.indexOf("sxt")>=0 || username.contains("尚学堂")){ // flag = true; // } User user = null;//默认登录失败 // UserDao userDao = new UserDaoImpl(); // user = userDao.find(username,password); UserService userService = new UserServiceImpl(); user = userService.login(username,password); //userService.addOrder("shoppingCart"); //输出结果 if(user != null){ //登录成功才记住我 //1.办理会员卡 String username2 = URLEncoder.encode(username,"utf-8"); Cookie cookie1 = new Cookie("uname",username2); Cookie cookie2 = new Cookie("password",password); //2.指定会员卡的作用范围,默认范围是当前目录 /servlet/LoginServlet /admin/login.jsp //cookie1.setPath("/"); //当前服务器 cookie1.setPath("/myservlet2/"); //当前项目 cookie2.setPath("/myservlet2"); //3.指定会员卡的作用时间 if("yes".equals(rememberme)){ cookie1.setMaxAge(60*60*24*10); //默认的时间浏览器不关闭的时间;-1 表示一直有效 cookie2.setMaxAge(60*60*24*10); }else{ cookie1.setMaxAge(0); cookie2.setMaxAge(0); } //4.将会员卡带回家 response.addCookie(cookie1); response.addCookie(cookie2); //成功跳转到成功页面 //out.println("登录成功"); // /servlet/LoginServlet // /servlet/success.jsp // request.getRequestDispatcher("/admin/success.jsp").forward(request,response); HttpSession session = request.getSession(); // session.setAttribute("username",username); session.setAttribute("user",user); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect("https://www.bjsxt.com:443/news/11377.html"); //response.sendRedirect("http://localhost:8080/myservlet2/admin/success.jsp"); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect("/myservlet2/admin/success.jsp"); //response.sendRedirect(request.getContextPath()+"/admin/success.jsp"); //http://192.168.58.250:8080/myservlet2/servlet/LoginServlet //http://192.168.58.250:8080/myservlet2/admin/success.jsp //登录成功后,网站的访问人数+1 //1.获取当前的访问人数 ServletContext context = this.getServletContext(); Integer count2 = (Integer) context.getAttribute("count"); //2.人数+1 if(count2 == null){ //第一个用户 count2 = 1; }else{ count2++; } //3.再存放到application作用域中 context.setAttribute("count",count2); //http://192.168.58.250:8080/myservlet2/servlet/admin/success.jsp response.sendRedirect("../admin/success.jsp"); }else{ //失败跳转回登录页面 //out.println("登录失败"); request.setAttribute("error","用户名或者密码错误"); // RequestDispatcher rd = request.getRequestDispatcher("/admin/login.jsp"); // rd.forward(request,response); //RequestDispatcher rd = request.getRequestDispatcher("http://localhost:8080/myservlet2/admin/login.jsp"); //RequestDispatcher rd = request.getRequestDispatcher("/admin/login.jsp"); //http://192.168.58.250:8080/myservlet2/servlet/admin/login.jsp RequestDispatcher rd = request.getRequestDispatcher("../admin/login.jsp"); rd.forward(request,response); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值