[英]Display Sql results based on Percentages
伙计们,美好的一天! 我试图在 SQL 中获得所需的结果。
我有一个这样的表
Products | Colors
******************
Bag | Blue
Shoes | Blue
Shirt | Yellow
Sandal | Yellow
Phone | Yellow
Cotton | Blue
Paper | Blue
Biro | Blue
Track | Yellow
Pouch | Yellow
Cap | Yellow
Hat | Yellow
Pants | Blue
Bucket | Blue
Belt | Blue
Car | Yellow
Socks | Yellow
上面的行是 20。
我想要实现的是随机显示10个结果:
其中:3 行(结果的 30%)为蓝色,7 行(结果的 70%)为黄色。
谢谢你。 我很抱歉没有详细询问。
这是一种几乎可以满足您的要求的方法。 要在纯 SQL 中实现您的确切规范涉及更多...
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(Products VARCHAR(20) NOT NULL
,Colors VARCHAR(20) NOT NULL
,PRIMARY KEY(products,colors)
);
INSERT INTO my_table VALUES
('Bag','Blue'),
('Shoes','Blue'),
('Shirt','Yellow'),
('Sandal','Yellow'),
('Phone','Yellow'),
('Cotton','Blue'),
('Paper','Blue'),
('Biro','Blue'),
('Track','Yellow'),
('Pouch','Yellow'),
('Cap','Yellow'),
('Hat','Yellow'),
('Pants','Blue'),
('Bucket','Blue'),
('Belt','Blue'),
('Car','Yellow'),
('Socks','Yellow');
SELECT * FROM my_table ORDER BY CASE WHEN colors = 'blue' THEN RAND()*3 ELSE RAND()*7 END DESC LIMIT 10;
+----------+--------+
| Products | Colors |
+----------+--------+
| Socks | Yellow |
| Shirt | Yellow |
| Hat | Yellow |
| Track | Yellow |
| Cap | Yellow |
| Sandal | Yellow |
| Car | Yellow |
| Pants | Blue |
| Shoes | Blue |
| Belt | Blue |
+----------+--------+
SELECT * FROM my_table ORDER BY CASE WHEN colors = 'blue' THEN RAND()*3 ELSE RAND()*7 END DESC LIMIT 10;
+----------+--------+
| Products | Colors |
+----------+--------+
| Track | Yellow |
| Phone | Yellow |
| Hat | Yellow |
| Socks | Yellow |
| Cap | Yellow |
| Sandal | Yellow |
| Shoes | Blue |
| Biro | Blue |
| Pouch | Yellow |
| Bucket | Blue |
+----------+--------+
SELECT * FROM my_table ORDER BY CASE WHEN colors = 'blue' THEN RAND()*3 ELSE RAND()*7 END DESC LIMIT 10;
+----------+--------+
| Products | Colors |
+----------+--------+
| Sandal | Yellow |
| Hat | Yellow |
| Pouch | Yellow |
| Socks | Yellow |
| Cap | Yellow |
| Bucket | Blue |
| Paper | Blue |
| Phone | Yellow |
| Track | Yellow |
| Shirt | Yellow |
+----------+--------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.