mrlis

Untitled

Jun 14th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.37 KB | None | 0 0
  1. --1
  2. SELECT cust_first_name AS "First name",
  3.     cust_last_name AS "Last name"
  4. FROM sh.customers
  5. WHERE cust_gender = 'F'
  6.     AND cust_marital_status = 'married'
  7.     AND cust_credit_limit IN(
  8.         SELECT MIN(cust_credit_limit) FROM sh.customers)
  9.     AND country_id NOT IN('JP', 'BR', 'IT')
  10. ;
  11.  
  12. --2
  13. WITH customers_with_phone_end_77 AS (
  14.     SELECT cust_first_name,
  15.         cust_last_name,
  16.         cust_city,
  17.         cust_street_address,
  18.         cust_main_phone_number,
  19.         cust_email
  20.     FROM sh.customers
  21.     WHERE cust_main_phone_number LIKE '%77')
  22. SELECT 'Name: ' || cust_first_name || ' ' || cust_last_name || '; ' ||
  23.     'city: ' || cust_city || '; ' ||
  24.     'address: ' || cust_street_address || '; ' ||
  25.     'number: ' || cust_main_phone_number || '; ' ||
  26.     'email: ' || cust_email || ';' AS "Querry"
  27. FROM customers_with_phone_end_77
  28. WHERE LENGTH(cust_street_address) IN(
  29.     SELECT MAX(LENGTH(cust_street_address))
  30.     FROM customers_with_phone_end_77)
  31. ;    
  32.  
  33. --3
  34. WITH min_price_girls AS (
  35.         SELECT prod_id, prod_min_price
  36.         FROM sh.products
  37.         WHERE prod_category = 'Girls'),
  38.     min_price_women AS (
  39.         SELECT prod_id, prod_min_price
  40.         FROM sh.products
  41.         WHERE prod_category = 'Women')
  42. SELECT *
  43. FROM sh.customers
  44. JOIN sh.sales USING (cust_id)
  45. WHERE prod_id IN (
  46.     SELECT prod_id
  47.     FROM (
  48.         SELECT prod_id
  49.         FROM min_price_girls
  50.         WHERE prod_min_price IN(
  51.             SELECT MIN(prod_min_price)
  52.             FROM min_price_girls)
  53.         UNION
  54.         SELECT prod_id
  55.         FROM min_price_women
  56.         WHERE prod_min_price IN(
  57.             SELECT MIN(prod_min_price)
  58.             FROM min_price_women)))
  59. AND cust_year_of_birth > 1980
  60. ;
  61.  
  62. --4
  63. SELECT *
  64. FROM sh.customers customers_mens
  65. WHERE cust_gender = 'M'
  66.     AND cust_marital_status IS NULL
  67.     AND cust_income_level LIKE 'D%'
  68.     AND EXISTS (
  69.         SELECT *
  70.         FROM sh.customers
  71.         WHERE country_id IN('DE', 'US')
  72.             AND cust_id = customers_mens.cust_id)
  73. ;
  74.  
  75. --5
  76. SELECT country_name AS "Coutry name",
  77.     round(avg(amount_sold),2) AS "Average amount"
  78. FROM sh.sales
  79. JOIN sh.customers USING(cust_id)
  80. JOIN sh.countries USING(country_id)
  81. GROUP BY country_name
  82. ORDER BY 2 DESC
  83. ;
  84.  
  85. --6
  86. SELECT substr(cust_email, instr(cust_email, '@') + 1) AS Domen,
  87.     COUNT(1) AS "Number of customers"
  88. FROM sh.customers
  89. GROUP BY substr(cust_email, instr(cust_email, '@') + 1)
  90. ;
  91.  
  92. --7
  93. SELECT country_name,
  94.     count_sold
  95. FROM (
  96.     SELECT country_name,
  97.         COUNT(*) AS count_sold,
  98.         round(avg(amount_sold), 2) AS avg_amount
  99.     FROM sh.sales
  100.     JOIN sh.products USING (prod_id)
  101.     JOIN sh.customers USING (cust_id)
  102.     JOIN sh.countries USING (country_id)
  103.     WHERE prod_category = 'Men'
  104.     GROUP BY country_name)
  105. WHERE count_sold > avg_amount
  106. ;
  107.  
  108. --8
  109. WITH quantity_cust_sex AS (
  110.     SELECT * FROM
  111.         (SELECT COUNT(cust_gender) AS sex_m,
  112.             country_id
  113.         FROM sh.customers  
  114.         WHERE cust_gender = 'M'
  115.         GROUP BY country_id)  
  116.         JOIN
  117.             (SELECT COUNT(cust_gender) AS sex_f,
  118.                 country_id
  119.             FROM sh.customers  
  120.             WHERE cust_gender = 'F'
  121.             GROUP BY country_id)  
  122.         USING(COUNTRY_ID))
  123. SELECT country_name AS "Страна",
  124.     round(sex_m * 100 / (sex_m + sex_f), 2) AS "% мужчин",
  125.     round(sex_f * 100 / (sex_m + sex_f), 2) AS "% женщин"
  126. FROM quantity_cust_sex
  127. JOIN sh.countries USING (country_id)
  128. ORDER BY country_name;
  129.  
  130. --9
  131. WITH quantity_sales AS(
  132.     SELECT MAX(quantity) AS max_quantity,
  133.         prod_id
  134.     FROM (
  135.         SELECT prod_id,
  136.             time_id,
  137.             SUM(quantity_sold) AS quantity
  138.         FROM sh.sales
  139.         GROUP BY prod_id, time_id
  140.         ORDER BY quantity DESC, prod_id ASC)
  141.     GROUP BY prod_id
  142.     ORDER BY 1 DESC)
  143. SELECT max_quantity AS "Макс покуп/день",
  144.     prod_name
  145. FROM quantity_sales
  146. JOIN sh.products USING (prod_id)
  147. WHERE rownum <= 20
  148. ;
  149.  
  150. --10
  151. SELECT MAX(quantity) AS max_quantity,
  152.     prod_category
  153. FROM (
  154.     SELECT prod_category,
  155.         time_id,
  156.         SUM(quantity_sold) AS quantity
  157.     FROM sh.sales
  158.     JOIN sh.products USING (prod_id)
  159.     GROUP BY prod_category, time_id)
  160. GROUP BY prod_category
  161. ORDER BY 1 DESC
  162. ;
  163.  
  164. --11
  165. CREATE TABLE sales_user7_Mikhail_Avdeev
  166. AS (SELECT *
  167.     FROM sh.sales
  168.     WHERE TRUNC(time_id, 'MM') IN(
  169.         SELECT TRUNC(time_id, 'MM')
  170.         FROM (
  171.             SELECT time_id,
  172.                 SUM(quantity_sold) AS sum_quantity
  173.             FROM sh.sales
  174.             GROUP BY time_id)
  175.         WHERE sum_quantity IN (
  176.             SELECT MAX(sum_quantity)
  177.             FROM (
  178.             SELECT time_id,
  179.                 SUM(quantity_sold) AS sum_quantity
  180.             FROM sh.sales
  181.             GROUP BY time_id))
  182.         )
  183.     )
  184. ;
  185.  
  186. --12
  187. UPDATE sales_user7_Mikhail_Avdeev
  188. SET time_id = to_date(to_char(time_id, 'DD.MM.YY') || ' ' ||
  189.     FLOOR(DBMS_RANDOM.VALUE (0, 24)) || ':' ||
  190.     FLOOR(DBMS_RANDOM.VALUE (0, 60)) || ':' ||
  191.     FLOOR(DBMS_RANDOM.VALUE (0, 60)) , 'DD.MM.YY HH24:MI:SS')
  192. ;
  193. commit;
  194.  
  195. --13
  196. SELECT to_char(TIME_ID, 'DD') AS "Day",
  197.     to_char(TIME_ID, 'hh24') AS "Hour",
  198.     SUM(quantity_sold)
  199. FROM sales_user7_Mikhail_Avdeev
  200. GROUP BY to_char(TIME_ID, 'DD'),
  201.     to_char(TIME_ID, 'hh24')
  202. ORDER BY 1, 2
  203. ;
  204.  
  205. --14
  206. DROP TABLE sales_user7_Mikhail_Avdeev;
Advertisement
Add Comment
Please, Sign In to add comment